91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

C++ map iterator遍歷中刪除元素

c++
小樊
87
2024-07-30 11:19:10
欄目: 編程語言

在C++中,使用std::map容器的迭代器遍歷并刪除元素是有一些注意事項的。因為在遍歷的過程中刪除元素會導致迭代器失效,可能會引起未定義行為。

一種可行的方法是先將需要刪除的元素的迭代器存儲起來,然后在遍歷完成后再統一刪除這些元素。示例代碼如下:

#include <iostream>
#include <map>

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

    std::map<int, std::string>::iterator it;
    std::map<int, std::string>::iterator toDelete;

    // 遍歷map并刪除需要的元素
    for (it = myMap.begin(); it != myMap.end(); ) {
        if (it->first == 2) {
            toDelete = it;
            ++it;
            myMap.erase(toDelete);
        } else {
            ++it;
        }
    }

    // 輸出剩余的元素
    for (it = myMap.begin(); it != myMap.end(); ++it) {
        std::cout << it->first << ": " << it->second << std::endl;
    }

    return 0;
}

在上面的示例中,我們先利用toDelete迭代器存儲需要刪除的元素的位置,然后在遍歷完成后再調用erase方法刪除這些元素。這樣可以確保不會在遍歷過程中出現迭代器失效的情況。

另外,還可以使用std::map容器提供的成員函數erase來刪除元素,但需要注意在刪除元素后要將迭代器遞增,否則會導致迭代器失效。

0
偏关县| 肇庆市| 卫辉市| 保德县| 石景山区| 玉龙| 新余市| 丽水市| 蒲城县| 胶州市| 柏乡县| 临高县| 开远市| 游戏| 齐河县| 商都县| 白玉县| 丹阳市| 宜都市| 察雅县| 攀枝花市| 兴化市| 饶河县| 武汉市| 黔西县| 仲巴县| 个旧市| 大关县| 化州市| 龙州县| 连州市| 新兴县| 濉溪县| 怀仁县| 囊谦县| 阳新县| 盈江县| 长兴县| 延川县| 平谷区| 阳泉市|