내가 잘못 된 부분을 알아낼 수 없습니다. 내가 알기로이 코드는 "1, 2, 3"을 반환해야하지만 다음과 같은 결과를 얻습니다. 필자는 벡터와 iterator를 전역 적으로 선언해야한다. 왜냐하면 필자는 vector를 실제 코드의 함수에 전달하고 일부 함수에서 iterator를 업데이트해야하기 때문이다. 어떤 도움을 주셔서 감사합니다!반복자가 가비지를 반환합니다.
#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
* "나는의 함수 벡터를 통과하고 있기 때문에 : 손 전에-또한 문제를 해결하기위한 충분한 메모리를 할당 할
reserve
를 사용하여,케빈이 언급 한 바와 같이 : 다음은 예상대로 작동합니다 내 실제 코드 "* - 함수에 전달하는 경우 전역에 있어야하는 이유는 무엇입니까? 그것은 모순 된 것처럼 보인다. – JBentley
JBentley - 저의 실수는, 저는 그것들을 함수에서 사용하고 있고 그것을 전달하고 싶지 않다는 것을 의미했습니다. 반복기 무효화에 대한 설명은 – bcf
[이 답변보기] (http://stackoverflow.com/a/6438087/1227469)을 참조하십시오. – JBentley