push_back会不会使迭代器失效?
我只知道插入可能会使迭代器失效,但是今天突然看到push_back(),这函数不会也使迭代器失效吧,网上看了看,说是会使end()失效,难道真是这样?那这迭代器也太恶心了吧 容器 迭代器
[解决办法]
容器是什么,vector 吗?
那 push_back 可能会是迭代器失效,因为 push_back 就是 insert(end,...);
[解决办法]
你到底要干吗,end() 从来就不应该 ++ 的,无论你是否 push_back.
[解决办法]
/*
当前容量: .capacity()
约定容量: .reserve(n)
下标[]: .operator[](i)不检查越界, .at(i)越界抛出异常
*/
#include <iostream>
using namespace std;
#include <vector>
#include "print.h"
#include <exception>
#include <typeinfo>
int main()
{
vector<double> vd;
for(int i=0; i<9; i++){
vd.push_back(i+0.1);
cout << &*vd.begin() << ':';
cout << vd.size() << '/' << vd.capacity() << endl;
}
return 0;
}
怎么更新呢 有具体代码吗
你push_back后再更新一下迭代器
vector<int>::iterator b = iter.begin();
vector<int>::iterator e = iter.end();
for(b;b != e; ++i)
{
iter.push_back(1);
e = iter.end();
}