Jak zwrócić wartość std::map?

0

Witajcie,

Jak mogę zwrócić wartość kontenera std::map o konkretnym kluczu? Na cppreference.com pisze, że .at() zwraca referencje, a użycie operatora [] tworzy pusty obiekt przy sprawdzaniu wartości.

0

Wyszukaj za pomocą

map.find
std::map<std::string, int> map;
int returnValue(std::string x)
{
auto found = map.find(x);
if(found  != map.end())
{
 //znaleziono
return *found->second;
}
}
2

Użyj .at().

0
int returnValue(std::string x)
{
  return map[x];
}

jeśli nie znajdzie to zwróci zero.

3

Czego z opisu w dokumentacji nie rozumiesz?

Mając mapę {klucz: 'wartość', klucz2: 'wartość2'}
map.at(klucz2) zwróci 'wartość2'
map.at(klucz3) rzuci wyjątek
map[klucz2] zwróci 'wartość2'
map[klucz3] utworzy nową zmienną typu wartości mapy (tutaj np. ' ') doda ją do mapy i ją zwróci (czyli mapa po wykonaniu operatora[] będzie wyglądała tak: {klucz: 'wartość', klucz2: 'wartość2', klucz3: ''})

0

Jeszcze takie pytanie (OT). Jak mam map<string, bool>::iterator to jak przypisać wartość (odczytać umiem bo przez iterator.second())? Na www.cplusplus.com nie mogę znajść o iteratorze do map.

2
mapa["abc"]=true;
map<string, bool>::iterator it=mapa.find("abc");
if(it!=mapa.end()) it->second=!it->second;

1 użytkowników online, w tym zalogowanych: 0, gości: 1