ja niedawno słoikach przez to:Dlaczego mapa <ciąg, ciąg> akceptuje wartości jako wartości?
#include <map>
#include <string>
#include <iostream>
using namespace std;
int main() {
map<string, string> strings;
strings["key"] = 88; // surprisingly compiles
//map<string, string>::mapped_type s = 88; // doesn't compile as expected
cout << "Value under 'key': '" << strings["key"] << "'" << endl;
return 0;
}
Drukuje 'X', który jest 88 w ASCII.
Dlaczego mapa ciągów przyjmuje wartości ints jako wartości? Dokumentacja dla mapy operator[]
mówi, że zwraca mapped_type&
, która jest w tym przypadku string&
i nie ma niejawnej konwersji z int
, prawda?
Powiązane: [Dlaczego C++ zezwala na przypisanie liczby całkowitej do ciągu znaków?] (Http://stackoverflow.com/q/1177704/335858). – dasblinkenlight