温馨提示×

c++ map删除对迭代器的影响

c++
小樊
164
2024-06-25 16:55:29
栏目: 编程语言
C++开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

在C++中,使用std::maperase()函数删除一个元素时,会使得传入的迭代器无效化。这意味着如果你尝试在删除元素后继续使用该迭代器,就会导致未定义的行为。

如果您要在删除元素后继续迭代std::map,您应该在删除元素之后递增迭代器,而不是继续使用已删除的迭代器。另外,您还可以使用std::mapfind()函数来查找下一个元素的迭代器。

以下是一个示例代码,展示了如何在删除元素后继续迭代std::map

#include <iostream>
#include <map>

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

    for(auto it = myMap.begin(); it != myMap.end(); ) {
        if(it->first == 2) {
            it = myMap.erase(it);
        } else {
            ++it;
        }
    }

    for(auto it = myMap.begin(); it != myMap.end(); ++it) {
        std::cout << it->first << ": " << it->second << std::endl;
    }

    return 0;
}

在上面的示例中,我们删除了键为2的元素,并且在删除后继续遍历std::map

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读:C++ Map容器迭代器失效怎么办

0