【发布时间】:2013-03-19 17:27:08
【问题描述】:
无法弄清楚我哪里出错了。据我了解,此代码应返回“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
【问题讨论】:
-
“因为我在我的实际代码中将向量传递给函数” - 如果你将它传递给函数,那么为什么它需要是全局的?这似乎是矛盾的。
-
JBentley - 我的错误,我的意思是我在函数中使用它们并且不想传递它们。
-
See this answer 了解迭代器失效的解释。
-
@David OOP 方法是使向量成为类的私有成员,并使用对其进行操作的公共成员函数。