質問

私は、データを格納する(GLibのから)GTreeを使用すべきか疑問?私はg_tree_insertルーチンでGTreeに挿入するすべての新しい値が上書き前のものです!

GTree *tree; //init
tree = g_tree_new( g_str_equal ); //"g_str_equal" is a GLib default compare func
//...
for( i = 0; i < 100; ++i )
    g_tree_insert( tree, random_key(), random_value() ); //insert some random vals
//
printf( "%d", g_tree_nnodes( tree ) ); //should be 100? NO! Prints "1"!!!

何が私が間違っているのでしょうか?ありがとうございます。

役に立ちましたか?

解決

平等を比較と同じではないためです。

は、g_tree_newは、次の2つのキー(すなわち、辞書順)ののための、だけでなく、それらが等しいか否かを与える機能を必要とします。

他のヒント

私は解決策を見つけたと思います。問題がでました。

tree = g_tree_new( g_str_equal );

公式のチュートリアルでは、私が(ちなみに、私はsuccessfuly問題なくGHashTableでそれを使用)、それを使用することにしましたので、それは、デフォルトGCompareFuncのの一つであると述べました。しかし、それは面倒です。正しい初期化があります:

tree = g_tree_new((GCompareFunc)g_ascii_strcasecmp);

出来上がり!できます! IBMのチュートリアルにありがとうます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top