Zugriff auf map-Wert von index

Wenn ich eine Struktur haben, wie

std::map<string, int> myMap;
myMap["banana"] = 1;
myMap["apple"] = 1;
myMap["orange"] = 1;

Wie kann ich auf myMap[0]?

Ich weiß, dass die Karte Arten intern und ich bin mit diesem feinen, ich möchte einen Wert in der map-index. Ich habe versucht myMap[0], aber ich bekomme die Fehlermeldung:

Error   1   error C2679: binary '[' : no operator found which takes a right-hand operand of type 'int' (or there is no acceptable conversion)   

Ich begreife, dass ich tun könnte etwas wie diese:

string getKeyAtIndex (int index){
    map<string, int>::const_iterator end = myMap.end(); 

    int counter = 0;
    for (map<string, int>::const_iterator it = myMap.begin(); it != end; ++it) {
        counter++;

        if (counter == index)
            return it->first;
    }
}

Aber sicher ist dies äußerst ineffizient? Gibt es einen besseren Weg?

InformationsquelleAutor Sam | 2011-10-21
Schreibe einen Kommentar