Referenz auf den Wert der STL-map-element?
Ist es in Ordnung, pass-Funktion eine Referenz auf den Wert des map-element, und ändern Sie es?
foo(string & s)
{
s = "xyz";
}
map<int, string> m;
m[1] = "abc";
foo(m[1]); //<-- Is it ok? Will m[1] be "xyz" after this call?
Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist die Antwort ja.
(operator [] gibt eine Referenz)
Ja, wir können.
Und es funktioniert auch mit
std::vectors
(und da sieht es, wie sind Sie mit den numerischen Tasten, können Sie erwägen, mit Ihnen statt).Ja.
Ist dies nicht anders schreiben m[1] = "xyz". Der compiler reduzieren Sie es alle über die gleiche Sache einmal fertig mit ihm.
Ein Wort der Beratung: möchten Sie vielleicht, um es zu übergeben als pointer statt als Referenz. Ich tun, um es offensichtlich für den flüchtigen Leser, dass es geändert wird.
Es ist alles über die Kommunikation, die eindeutig mit dem nächsten Kerl comming down der Spieß, wer hat für die Beibehaltung dieser code.
Aber andere als, dass, ja, es ist völlig legal code!
Ja, es ist gut - wie jeder schon gesagt - und darüber hinaus, wird Ihr compiler wird Ihnen sagen, wenn es nicht so ist. Möchten Sie vielleicht ein bisschen Experimentieren; versuchen Sie "Hallo" oder (42) foo(string&), bis man ein Gefühl für die Warnungen, die der compiler dir gibt.