tr1::unordered_map mit zeigern
-
Hallo ihr,
ich habe ein Programm geschrieben, dass eine tr1::unordered_multimap verwendet.
Aber ich habe das Gefühl, dass das Matching (in Form von find und equal_range) nicht funktioniert. Hier der kleinste Code wo das auftritt:struct inthash { size_t operator () (int* n) const { size_t seed = long(n) % 2; return seed; } }; typedef unordered_multimap<int*, int, inthash> mm; int main() { mm h; int* i1 = new int(3); h.insert(make_pair(i1, 3)); int* i2 = new int(5); cout << i1 << " " << i2 << endl; std::pair<mm::const_iterator, mm::const_iterator> p = h.equal_range(i2); if (p.first == h.end()) { cout << "no matching\n"; } else { cout << "found matching\n"; } return 0; }Ich erzeuge zwei Int pointer und will sie zusammen hashen wenn beide eine gerade Adresse haben (siehe inthash).
Allerdings ist die Ausgabe immer "no matching" auch wenn die beiden Adressen gerade waren.
Könnt ihr euch das erklären?Viele Grüße,
Jean
-
was soll das für ein schrott sein? das kompiliert doch nicht mal, das seh ich von hier.
-
Du bist im falschen Forum. Hier geht's um ANSI C, nicht um C++.
-
#include <iostream> #include <tr1/unordered_map> using namespace std; using std::tr1::unordered_multimap;mit diesem Dateianfang schon

Grüße,
Jean
-
das kompiliert nicht. kann das sein dass das c++ sein soll? sieht ja grauselig aus
-
dschutschi schrieb:
#include <iostream> #include <tr1/unordered_map> using namespace std; using std::tr1::unordered_multimap;mit diesem Dateianfang schon

Grüße,
JeanMit dem Dateianfang steigt der C-Compiler noch vor deinem Code aus. C ist nicht C++. Wie schon geasgt wurde, du bist im falschen Forum.
-
danke, habs im c++ forum gepostet....
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum ANSI C in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.