gpt4 book ai didi

c++ - 当设置为 begin 时,vector::iterator 从 vector 的末尾开始

转载 作者:行者123 更新时间:2023-11-30 04:05:52 24 4
gpt4 key购买 nike

所以我正在尝试这个小练习来掌握 C++ 的窍门,问题是每当我对包含结果的 vector 使用迭代器时,它总是从 vector 的末尾开始然后崩溃。

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 个结果放入 vector 中,因此 resultsIterator 从最后一个值开始,它被打印出来,然后 boom 崩溃,因为它试图访问 vector 外部.

最佳答案

我想你想要的是:

cout << *resultsIterator << endl;

关于c++ - 当设置为 begin 时,vector<int>::iterator 从 vector 的末尾开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23100583/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com