Вставить пару в карту и увеличить количество? - PullRequest
0 голосов
/ 25 сентября 2018

Кодовая база, в которой я работаю, использует map::operator[] для вставки и для увеличения количества элементов в этой записи на единицу (для меня это пробел в знаниях).Вот пример:

map<string, size_t> namesMap;
namesMap[firstName]++;

То, что я хочу сделать, это привязать идентификатор к вставке, сохраняя при этом поведение приращения в приведенном выше синтаксисе.

Моя новая карта будет выглядеть следующим образом:

map<string, pair<int, size_t>> namesMapWithID;

Я изо всех сил пытаюсь понять, как получить эквивалентную функциональность с моей новой картой.Это в основном моя цель (очевидно, неверная, поскольку «++» не может быть использован таким образом):

namesMapWithID.insert(firstName, make_pair(employeeID, ++));

Есть ли лучший подход, который я упускаю?

1 Ответ

0 голосов
/ 25 сентября 2018

Вы можете сделать это, используя метод insert вместе с парой it / bool, которую он возвращает, тем самым предоставляя один поиск (по имени), устанавливая id сотрудника при первоначальном поиске, а затем увеличивая счетчик соответственно.

Примерно так:

auto pr = namesMapWithID.insert(std::make_pair(firstName,
    std::make_pair(employeeID, size_t())));
++pr.first->second.second;
...