相关疑难解决方法(0)

为什么这个向量迭代器不可递增?

我正在尝试删除向量的内容而我收到错误 - 向量迭代器不可递增,为什么会这样?

这是我的析构函数:

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)

谢谢.

c++ iterator memory-management vector

19
推荐指数
2
解决办法
3万
查看次数

使用vector <> :: push_back()时如何使用向量迭代器

为简单起见,我会坚持,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)

c++ iterator vector push-back

1
推荐指数
1
解决办法
4542
查看次数

标签 统计

c++ ×2

iterator ×2

vector ×2

memory-management ×1

push-back ×1