Vector:<int>:迭代器在设置时使用 begin 时从向量的末尾开始

vector<int>::iterator starts at end of vector when set with begin

本文关键字:begin 向量 开始 设置 int lt gt 迭代器 Vector      更新时间:2023-10-16

所以我正在尝试这个小练习来掌握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;
}

有问题的turd代码就是这里文本上方的for循环。出于某种原因,如果我输入3个测试用例,我会将3个结果放入向量中,因此resultsDetar从最后一个值开始,它被打印出来,然后boom崩溃,因为它试图访问向量之外的内容。

我想你想要的是:

cout << *resultsIterator << endl;