У меня есть общий вопрос относительно набора, unordered_set, map, unordered_map в C ++ STL.
Я часто вижу код, который проверяет, есть ли уже элемент в наборе / карте, прежде чем пытаться изменить его значение.
Мне было интересно, когда рекомендуется вручную проверять, существует ли элемент в наборе / карте, прежде чем пытаться изменить его?
Например:
unordered_set<string> banwords(banned.begin(), banned.end());
unordered_map<string, int> count;
string word = "test";
if (banwords.find(word) == banwords.end()){
++count[word];
if (count[word] > maxpair.second){
maxpair.first = word;
maxpair.second = count[word];
}
}
Не выполняется проверка, чтобы определить, существует ли уже слово в счетчике, вместо этого предполагается, что count[word] = 0
еще до того, как оно существует на карте.
С другой стороны, я видел другие потоки, которые поощряют проверку, существует ли элемент первым.
Какое рекомендуемое решение здесь?