Wie kann ich in std::multimap <bool life, int id, std::pair < x, y >>
einfügen?C++ Wie fügt man in std :: multimap ein?
Ich benutze es zum Speichern von Daten-Player und ia, Ist es der beste Container dafür?
Wie kann ich in std::multimap <bool life, int id, std::pair < x, y >>
einfügen?C++ Wie fügt man in std :: multimap ein?
Ich benutze es zum Speichern von Daten-Player und ia, Ist es der beste Container dafür?
Nicht gut.
Die Signatur einer Multimap ist wie folgt:
template < class Key, // multimap::key_type
class T, // multimap::mapped_type
class Compare = less<Key>, // multimap::key_compare
class Alloc = allocator<pair<const Key,T> > // multimap::allocator_type
> class multimap;
Die falsche Verwendung Ihrer multimap ist.
Der Schlüssel ist bool
das heißt, Sie verwenden nur zwei Knoten 0
und 1
(oder false´ and
true`). So ist jedes eingefügte Element in jedem von ihnen, und somit werden Sie Elemente mit dem gleichen Schlüssel tatsächlich anwerben. Dies ist ineffizient.
Der Wert ist ein int
. Nun, in Ordnung, obwohl ich mich frage, warum sollten Sie eine bool
zu einem int
zuordnen.
Und schließlich der Fehler in Ihrer Unterschrift: pair
ist keine Funktion vergleichen, aber das dritte Template-Argument muss ein Funktion vergleichen. Wenn Sie es leer lassen, dann ist es standardmäßig less<bool>
(weil Sie bool
als Schlüssel gewählt haben).
Haben Sie versucht "einfügen"? –
Der dritte Template-Parameter von 'std :: multimap' ist ein Komparator. Ich weiß nicht, was Sie genau machen wollen. Die Erklärung in der Frage und das bisschen Code, das Sie zur Verfügung gestellt haben, ergeben für mich keinen Sinn. – chris
Sie finden nützliche Dokumentation zu [cppreference] (http://en.cppreference.com/w/cpp/container/multimap) –