亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

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
崇义县| 堆龙德庆县| 衢州市| 元氏县| 买车| 昭通市| 阆中市| 双城市| 家居| 贵溪市| 和政县| 沭阳县| 江北区| 丰镇市| 重庆市| 仙游县| 镇远县| 全椒县| 郧西县| 蓬安县| 南川市| 永川市| 大渡口区| 紫金县| 阳朔县| 钟山县| 田东县| 驻马店市| 平和县| 大厂| 长沙市| 奉新县| 临夏市| 新乡市| 繁峙县| 台北市| 东至县| 巧家县| 木兰县| 福州市| 新津县|