내가 스피가 다음 샘플 프로그램에서 이상한 반응에 직면 벡터 STL 사용하려고했던 반환 : 내부STL 벡터 사용 문제 - 기능 비 제로 반복자
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
vector<int>::iterator fun();
vector<int> myvector;
bool IsOdd (int i) {
return ((i%2)==1);
}
int main()
{
vector<int>::iterator it;
it = fun();
if (it == myvector.end())
cout << "Reached end, Global" << endl;
else
cout << "Not end" << endl;
}
vector<int>::iterator fun() {
vector<int>::iterator it;
myvector.push_back(10);
myvector.push_back(26);
myvector.push_back(40);
myvector.push_back(56);
it = find_if (myvector.begin(), myvector.end(), IsOdd);
cout << "The first odd value is " << *it << endl;
if (it == myvector.end())
cout << "Reached end, inside the function" << endl;
else
cout << "Not end" << endl;
return it;
}
스피하기 "에 도달 끝" fun() 함수는 주 프로그램에서 "Not End"로 표시됩니다.
확실치 않은 이유는 무엇입니까? 또한, myvector.end()의 주소가 main 프로그램 [fun() 호출 후], where-as에 나타나서 fun() 함수 내에서 0이 아닌 값을 나타내는 것으로 나타났습니다.
@Roopesh : 질문하는 문제를 해결하기 위해 코드를 편집하지 않는 것이 좋습니다. 더 이상 문제가되지 않습니다. 아니면 변경 후에도 여전히 동일한 문제가 발생합니까? –
나는 정정 된 코드를 실행했습니다. "Reached end"를 메인과 재미로 기록합니다 ... – Vladimir
죄송합니다. 제거하는 것을 잊어 버렸습니다 [ "myvector"의 로컬 인스턴스] ... 로컬을 제거하더라도 myvector의 인스턴스가보고 된 문제를 표시하고 있습니다. –