2016-04-04 9 views
0

glibライブラリのGArrayを使用しています。位置xの値を所定の値に設定します。ちょうど私がc配列と配列[x] = 5を使用するのと同様に;glib-libraryのGArrayを使用して指定されたインデックスの値を置き換えます。

なぜ機能が見つからないのですか?これは配列の意味ではありませんか?ドキュメント:https://developer.gnome.org/glib/stable/glib-Arrays.html

古い値を削除して新しい値を挿入することができました。しかし、これは愚かなものです。より良い方法がありますか?

UPDATE:それは私のこれまでexplaintたノームのBugzillaに

は通常の方法である:ドキュメントが、これは明確にしていません

int *element = &g_array_index (array, int, i); 
*element = 42; 

https://bugzilla.gnome.org/show_bug.cgi?id=764599

+0

'g_array_insert_val'を試しましたか? –

+1

はい、これにより値が挿入されます。私はそれを交換したい。私が言ったように - 私は新しい値を挿入して古い値を削除することができますが、すべての値を2回コピーするよりも速く効率的な方法はありませんか? – AnnoSiedler

答えて

2

が、g_array_indexがあるので、マクロを使用すると、設定するだけでなく取得することもできます。

g_array_index(foo, int, 0) = 23; 
g_array_index(foo, int, 1) = 42; 

残念ながらそれは更新もちょっとガライのポイントを破って、配列のサイズをチェックしません。十分なメモリが確保されるように、g_array_sized_newまたはg_array_set_sizeを使用する必要があります。

私はドキュメントも例も見つかりません。 descriptionで曖昧な言及を超えて文書化して、g_array_indexを使用して「要素にアクセス」することができますが、それは後でg_array_index docsと矛盾し、「要素を返す」としか言いようがありません。 g_array_set_valを提供し、混乱することはない方が良いでしょう。 Perhaps you can let them know

+0

私は思ったよりも簡単です。ありがとう。あなたは私の日を救った:)。 – AnnoSiedler