g_tree_insert tüm verilerin üzerine yazar

oy
1

Ben (GLib'in itibaren) GTree veri depolamak için kullanması gereken acaba? Ben g_tree_insert rutin GTree içine yerleştirin Her yeni öncekinin yerine ise!

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!!!

Neyi yanlış yapıyorum? Teşekkür ederim.

Oluştur 23/03/2010 saat 06:50
kaynak kullanıcı
Diğer dillerde...                            


2 cevaplar

oy
0

Ben bir çözüm buldum. Sorun oldu:

tree = g_tree_new( g_str_equal );

Resmi öğretici varsayılan GCompareFunc yılların biridir söyledi, ben (bu arada, ben başarıyla hiçbir sorunla GHashTable kullanmak) kullanmaya karar verdik. Ama sorun. Doğru başlatma olduğu:

tree = g_tree_new((GCompareFunc)g_ascii_strcasecmp);

Ve işte! İşe yarıyor! IBM öğreticiler için Teşekkürler.

Cevap 23/03/2010 saat 07:08
kaynak kullanıcı

oy
1

Eşitlik, karşılaştırma olarak aynı olmadığından budur g_tree_newverir bir işlev ihtiyacı emri iki tuşları (yani sözlük sırası), onlar eşit veya olmayan sadece belirler.

Cevap 23/03/2010 saat 07:15
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more