溫馨提示×

c++ map刪除對迭代器的影響

c++
小樊
193
2024-06-25 16:55:29
欄目: 編程語言

在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。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女