У меня есть std::unordered_map
std::unordered_map<std::string, std::string> myMap;
Я хочу получить итератор const, используя find. В С++ 03 я бы сделал
std::unordered_map<std::string, std::string>::const_iterator = myMap.find("SomeValue");
В С++ 11 я бы хотел использовать auto, чтобы сократить количество шаблонов.
auto = myMap.find("SomeValue");
Это будет const_iterator или iterator? Как компилятор решает, что использовать? Есть ли способ заставить его выбрать const?
nonConstMap.find
всегда возвращаетiterator
. Тип возвращаемого значения и то, что вы делаете с результатом (например, передаете его конструкторуconst_iterator
), не влияет на выбор перегрузки. То есть он возвращаетconst_iterator
только в том случае, если вы вызываетеconstMap.find
. - person   schedule 26.02.2012