brauche ich so eine Karte haben:Suchen und Einfügen in einer Karte mit 3 Elementen in C++
typedef std::map<int, float , char> Maptype ;
Was die Syntax Elemente des Paares in dieser Karte einfügen und auf der Suche.
brauche ich so eine Karte haben:Suchen und Einfügen in einer Karte mit 3 Elementen in C++
typedef std::map<int, float , char> Maptype ;
Was die Syntax Elemente des Paares in dieser Karte einfügen und auf der Suche.
Ein map
kann nur einen Schlüsseltyp einem Datentyp zuordnen. Wenn die Daten 2 Elemente enthalten, verwenden Sie eine Struktur oder std::pair
.
typedef std::map<int, std::pair<float, char> > Maptype;
...
Maptype m;
m[123] = std::make_pair(0.5f, 'c');
...
std::pair<float, char> val = m[245];
std::cout << "float: " << val.first << ", char: " << val.second << std::endl;
Vermeiden Sie es, das Paar aus der Karte zu kopieren, indem Sie eine Referenz zuweisen: Std :: Paar
Sie können nicht drei Elemente haben. Die STL map
speichert ein Schlüssel/Wert-Paar. Sie müssen entscheiden, was Sie als Schlüssel verwenden werden. Ist das erledigt, können Sie wahrscheinlich Nest die anderen beiden in einer separaten Karte und verwenden Sie es als:
typedef std::map<int, std::map<float, char> > MapType;
Um in einer Karte einzufügen, verwenden Sie die operator[]
oder die insert
Memberfunktion. Sie können nach der Elementfunktion find
suchen.
MapType m;
// insert
m.insert(std::make_pair(4, std::make_pair(3.2, 'a')));
m[ -4 ] = make_pair(2.4, 'z');
// fnd
MapType::iterator i = m.find(-4);
if (i != m.end()) { // item exists ...
}
Zusätzlich können Sie bei Boost.Tuple suchen.
Danke für Infos. Wie suche ich nach dem Paar in Map? Wird es m.find sein (STD :: make_pair (3.2, 'a');? – John
@John: Du suchst immer nach dem Schlüssel. Wenn dein Schlüssel vom Typ 'pair
@dirkgently: Das obige Beispiel funktioniert nicht, wenn ich zwei Klassenzeigerinstanzen und eine Zeichenkette verwende, wie typedef std :: map
Verwenden Sie entweder
std::map<std::pair<int, float>, char>
oder
std::map<int, std::pair<float, char> >
je nachdem, was richtig ist.
Welche (s) ist/sind der/die Schlüssel? – sbi
Bitte überprüfen Sie, dass Sie hier nicht verwirrt sind. Eine Map kann ein drittes Element enthalten, wenn es sich um einen Ordnungsbefehl handelt. – Owl