我正在尝试删除向量的内容而我收到错误 - 向量迭代器不可递增,为什么会这样?
这是我的析构函数:
City::~City()
{
vector <Base*>::iterator deleteIterator;
for (deleteIterator = m_basesVector.begin() ; deleteIterator != m_basesVector.end() ; deleteIterator++)
m_basesVector.erase(deleteIterator);
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
为简单起见,我会坚持,vector<int>
但我认为这适用于任何vector<T>
对象.
如果我使用a vector<int>::iterator
来跟踪int的向量中的某个位置然后我使用vector<int>::push_back()
,则迭代器变得毫无价值.意思是,我不能将其地址用于&
或取消引用它.一旦我打印出以下意义上的某些对象的地址,直接原因就有了意义:
vector<int> my_vec(1); //my_vec[0] = 0
vector<int>::iterator it = my_vec.begin(); //it -> my_vec[0], *it = my_vec[0] = 0
cout << "&my_vec = " << &my_vec << "\n";
cout << "&my_vec[0] = " << &my_vec[0] << "\n";
cout << "&it = " << &it << "\n"; //prints address, all good
cout << "*it = " << *it << "\n"; //prints 0, all good
cout << "\n\n" << pushing back..." << …
Run Code Online (Sandbox Code Playgroud)