for (auto it = myMap.begin(); it != myMap.end(); ) {
    if (it->second == valueToRemove) {
        it = myMap.erase(it);
    } else {
        ++it;
  • 使用 C++11 中新增的 range-based for 循环,并将元素放入另一个容器:
  • std::vector<int> keysToRemove;
    for (const auto& [key, value] : myMap) {
        if (value == valueToRemove) {
            keysToRemove.push_back(key);
    for (const auto& key : keysToRemove) {
        myMap.erase(key);
    

    注意,在第二种方法中,我们将要删除的元素的键存储在另一个容器中,因为在遍历 map 的同时删除元素可能会导致迭代器失效。

    希望这些信息能够帮助您。如果您有其他问题,请随时告诉我。

  •