繁体   English   中英

为什么不能这样删除向量的所有元素?

[英]Why can't I erase all element of vector like this?

我崩溃的源代码在这里:

#include <vector>
using namespace std;
vector<int>::iterator iter , tempIt;
int main() {
    vector<int> cont(3, 5);
    for (iter = cont.begin() ; iter != cont.end() ; ) {
        tempIt = iter;
        ++iter;
        cont.erase(tempIt);
    }
    return 0;
}

擦除最后一个元素时,它总是失败。

http://en.cppreference.com/w/cpp/container/vector/erase

在擦除点或擦除点之后使迭代器和引用无效,包括end()迭代器。

因此,擦除会使您的iter器无效,并且此后您有未定义的行为。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM