所以我正在尝试这个小练习来获取c ++的问题,问题是每当我对包含结果的向量使用迭代器时,它总是从向量的末尾开始然后崩溃。
cin >> mTestCases;
int i = 0;
while (mCycles.size() < mTestCases) {
int x;
cin >> x;
mCycles.push_back(x);
}
//Cycling through said values
vector<int>::iterator iterator;
i = 0;
for(iterator = mCycles.begin(); iterator != mCycles.end(); ++iterator) {
int j = 0;
int height = 1;
while (j < *iterator) {
if (j%2)
height++;
else
height*=2;
j++;
}
mResults.push_back(height);
}
vector<int>::iterator resultsIterator;
for (resultsIterator = mResults.begin(); resultsIterator != mResults.end(); ++resultsIterator) {
cout<<mResults.at(*resultsIterator)<<endl;
}
有问题的粪便代码就是这里的for循环。出于某种原因,如果我输入3个测试用例,我会将3个结果放入向量中,因此resultsIterator从最后一个值开始,它被打印出来,然后繁荣崩溃,因为它试图访问向量之外
答案 0 :(得分:2)
我认为你想要的是:
cout << *resultsIterator << endl;