c – 迭代器返回垃圾
发布时间:2020-12-16 09:43:36 所属栏目:百科 来源:网络整理
导读:参见英文答案 Does resizing a vector invalidate iterators?????????????????????????????????????5个 无法弄清楚我哪里出错了.据我所知,这段代码应返回“1,2,3”,但我得到以下内容.我需要全局声明的向量及其迭代器,因为我将向量传递给实际代码中的函数,并
参见英文答案 >
Does resizing a vector invalidate iterators?????????????????????????????????????5个
无法弄清楚我哪里出错了.据我所知,这段代码应返回“1,2,3”,但我得到以下内容.我需要全局声明的向量及其迭代器,因为我将向量传递给实际代码中的函数,并且需要在某些函数中更新迭代器.任何帮助表示赞赏! #include <iostream> #include <vector> using namespace std; vector<float> grid; vector<float>::iterator gridPtr; int main() { grid.push_back(1); grid.push_back(2); gridPtr = grid.begin(); grid.push_back(3); cout << "gridPtr: " << *gridPtr << endl; gridPtr++; cout << "gridPtr: " << *gridPtr << endl; gridPtr++; cout << "gridPtr: " << *gridPtr << endl; } 返回: gridPtr: 2.62257e-33 gridPtr: 2 gridPtr: 0 解决方法
push_back()可能使所有迭代器无效.也就是说,如果必须重新分配后备存储,则所有现有迭代器都将失效.
如果您提前知道要推送多少元素,则可以使用reserve()预分配必要的内存,这将阻止push_back()重新分配(从而使迭代器无效). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |