000
14.07.2011, 14:06 Uhr
~kAnI
Gast
|
Hallo
bitte sagt mir was ich falsch mache!!!
Ich habe eine map, die als key ein struct Identifier bekommt, damit ich statt nur einem key zwei habe.
Nach dem Einfügen des ersten Elements (elem1) in die map settings_ bekomme ich einen Iterator ret0 (siehe code).
Das zweite Element (elem2) hat einen gleichen ersten key (toolId) wie elem1, aber einen anderen zweiten key (rowNum).
Also, würde ich erwarten, dass nach dem zweiten Einfügen in der map zwei Elemente sind. Das passiert aber anscheinend nicht, weil nach dem zweiten Einfügen die Iteratoren ret0 und ret1 gleich sind.
D.h. die Benutzung meiner beiden keys funktioniert noch nicht richtig. Es wird nur der erste Schlüssel berücksichtigt. Und ich habe leider keine Idee was ich falsch mache.
Hier ist mein Code:
C++: |
struct Identifier { FGuid toolId; int rowNum;
Identifier(FGuid id, int row) : toolId(id), rowNum(row) {}
bool operator<(const Identifier& identifier) const { return toolId < identifier.toolId; } }; struct SettingsItem { std::wstring guid; std::wstring value; }; typedef std::map<Identifier, std::deque<SettingsItem>> SETTINGS;
static SETTINGS settings_;
int main() { SettingsItem toolSet; ToolId toolId(12345); int row0 = 0; int row1 = 1; Identifier ident0(toolId, row0); Identifier ident1(toolId, row1);
std::pair<std::map<Identifier, std::deque<SettingsItem>>::iterator, bool> ret0; std::pair<std::map<Identifier, std::deque<SettingsItem>>::iterator, bool> ret1;
ret0 = settings_.insert(SETTINGS::value_type(ident0, toolSet)); //elem1 ret1 = settings_.insert(SETTINGS::value_type(ident1, toolSet)); //elem2
return 0; }
|
Vielen Dank für euere Hilfe!!!
Bearbeitung von 0xdeadbeef: |
cpp-Tags geradegezogen
|
Dieser Post wurde am 14.07.2011 um 14:10 Uhr von 0xdeadbeef editiert. |