Mam std :: unordered_mapJak wybrać typ iteratora za pomocą automatycznej zmiennej?
std::unordered_map<std::string, std::string> myMap;
chcę uzyskać const iterator użyciu find. W C++ 03 zrobiłbym
std::unordered_map<std::string, std::string>::const_iterator = myMap.find("SomeValue");
w C++ 11 chciałbym używać auto zamiast ściąć na szablonach
auto = myMap.find("SomeValue");
Będzie to const_iterator lub iterator? W jaki sposób kompilator decyduje, którego użyć? Czy istnieje sposób, w jaki mogę go zmusić do wyboru const?
Może kompilator robi funkcji szerokości typu wnioskowanie ... Ale dlaczego constness od spraw iterator do ciebie? –
Jeśli moje rozumienie przeciążenia nie jest poprawne (lub http://en.cppreference.com/w/cpp/container/unordered_map/find jest złe), 'nonConstMap.find' zawsze zwraca' iterator'. Typ zwracany i to, co robisz z wynikiem (np. Przekazujesz go do konstruktora 'const_iterator'), nie ma wpływu na to, które obciążenie zostało wybrane. Oznacza to, że zwraca tylko 'const_iterator', jeśli wywołasz' constMap.find'. – delnan