Tak, ten kod zadziała na dowolny typ klucza, w tym double
. Powodem tego jest to, że niestanowiący wartości operator []
zwraca wartość odniesienia dla klucza, a nie kopię tej wartości. Jest to odniesienie, do którego zostanie zastosowany operator ++
.
Kod fragment, które wykazują działa następująco:
- Dla każdej kluczowej
t
typu string
w pojemniku str
,
- Mapa
w
jest poszukiwany za dany klucz
- Od wejścia nie ma tam, nowy został wstawiony do mapy
- Ponieważ klucz wpisu jest znany, ale wartość nie jest, domyślny obiekt dla wartości zostanie utworzony
- odniesienie do nowo utworzonego obiektu (w tym przypadku
int&
zerowany) jest zwrócony do wywołującego
- Operator
++
stosuje się odniesienia zwróconej od []
, która zmienia 0
do 1
(lub 0.0
do 1.0
itp.)
Nie mogę zrozumieć, o co właściwie pytasz. Czy możesz powtórzyć? –
Przepraszamy za zamieszanie. Poniższe odpowiedzi są bardzo pomocne. – wenfeng