温馨提示×

c++怎么遍历map删除特定元素

c++
小亿
139
2024-01-29 16:17:05
栏目: 编程语言

在C++中,可以使用迭代器来遍历map,并删除特定元素。具体的步骤如下:

  1. 定义一个迭代器来遍历map。例如,使用auto来定义一个自动推导的迭代器:
for (auto it = myMap.begin(); it != myMap.end();)
{
    // 遍历的代码
}
  1. 在遍历的代码中,判断当前元素是否需要删除。如果需要删除,则使用迭代器的erase()方法来删除元素,并将迭代器指向下一个元素。如果不需要删除,则直接将迭代器指向下一个元素。
if (条件满足)
{
    myMap.erase(it++); // 先用后加,避免迭代器失效
}
else
{
    ++it;
}

完整的示例代码如下:

#include <iostream>
#include <map>

int main()
{
    std::map<int, std::string> myMap;
    myMap[1] = "one";
    myMap[2] = "two";
    myMap[3] = "three";
    myMap[4] = "four";
    myMap[5] = "five";

    // 遍历并删除特定元素
    for (auto it = myMap.begin(); it != myMap.end();)
    {
        if (it->first == 3)
        {
            myMap.erase(it++); // 先用后加,避免迭代器失效
        }
        else
        {
            ++it;
        }
    }

    // 输出结果
    for (const auto& pair : myMap)
    {
        std::cout << pair.first << ": " << pair.second << std::endl;
    }

    return 0;
}

运行以上代码,输出结果为:

1: one
2: two
4: four
5: five

可以看到,元素3被成功删除了。

0