Предположение о первоначальном значении карты в С++

Я инициализирую карту map<string,int> ex; на C++. Я не смог найти contains_key или аналогичную функцию в stl, поэтому я просто использую ex[inputString]++;

Отладчик показывает, что int правильно инициализируется нулем, правильное ли это предположение?


person Community    schedule 27.02.2010    source источник


Ответы (1)


Да, значения, которые не существуют при доступе с помощью operator[], создаются по умолчанию. Для числовых значений это 0.

Тем не менее, вы ищете метод count:

bool hasElement = ex.count("element");
person GManNickG    schedule 27.02.2010
comment
спасибо, приятно знать, что он инициализируется нулем, сохраняет, если !exists, тогда инициализирует структуру, необходимую в python - person ; 27.02.2010
comment
@akshayubhat map[k] в C++ и dict.setdefault(k[,d]) в Python похожи тем, что для несуществующего ключа будет установлено значение по умолчанию, а map.find(k)->second в C++ и dict[k] в Python похожи тем, что несуществующий ключ выдаст ошибку. Два языка просто выбрали разные варианты, для которых должна быть общая операция. - person ephemient; 27.02.2010