Сотрите все записи с заданным значением из std :: map, используя std :: for_each - PullRequest
1 голос
/ 06 апреля 2020

У меня есть карта, где отдельные цвета отображаются на несколько сущностей.

Я хочу стереть все элементы с карты с заданным значением e, переданным в качестве аргумента:

std::map<Color, Entity> encodedColors;

void eraseAllByValue(Entity e) {
     for (auto it = encodedColors.begin(); it != encodedColors.end();) {
        if (it->second == e) {
            it = encodedColors.erase(it);
        } else {
            ++it;
        }
    }
}

Вышеупомянутая функция работает очень хорошо, однако: как этого можно достичь с помощью std::for_each или подобной конструкции STL? У меня проблема с созданием правильного лямбда-выражения.

...