Dość osobliwe:Dlaczego mapa <bool,int> m = {{1,2}, {3,4}, {5,0}}; rozmiar 1, a nie 3?
map<bool,int> mb={{1,2},{3,4},{5,0}};
cout << mb.size();
map<int,int> mi={{1,2},{3,4},{5,0}};
cout << mi.size();
drukuje się
Dość osobliwe:Dlaczego mapa <bool,int> m = {{1,2}, {3,4}, {5,0}}; rozmiar 1, a nie 3?
map<bool,int> mb={{1,2},{3,4},{5,0}};
cout << mb.size();
map<int,int> mi={{1,2},{3,4},{5,0}};
cout << mi.size();
drukuje się
std::map
jest unikalny klucz. 1
, 3
, 5
wszystkie zyski true
po przeliczeniu na bool
.
Tylko zgadnij, ale twoja pierwsza mapa ma bool
jako typ klucza, a wszystkie wartości 1, 3 and 5
są prawdziwe.
Tylko raz przepisujesz ten sam wpis.
Twoja pierwsza mapa ma bool jako klucz. Istnieją tylko dwie wartości boolu. Podajesz ints jako dane wejściowe. Non-0 ints są prawdziwe, a 0 ints są fałszywe. Wszystkie twoje klucze są zatem prawdziwe. Dwa z nich są nadpisywane przez ostatnie. Dlatego rozmiar wynosi 1.
doh, zaakceptuje, gdy upłynie limit czasu – NoSenseEtAl