Vector:<int>:迭代器在设置时使用 begin 时从向量的末尾开始
vector<int>::iterator starts at end of vector when set with begin
所以我正在尝试这个小练习来掌握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;
相关文章:
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- 写入向量<向量<bool>>
- 函数向量_指针有不同的原型,我可以构建一个吗
- std::向量与传递值的动态数组
- 将值指定给向量(2D)的向量中的某个位置
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 如何使用向量的template_back函数
- 了解向量中的 .begin 和 .end
- 错误:调用'begin(long double [nPoints])'没有匹配函数;使用硬编码的 int 与整数变量初始化向量
- 是否保证C++向量v的v.begin()+v.size()==v.end()
- 使用 std::begin 和 std::end 进行向量初始化
- 使用 std::begin() 和 std::end() 从数组构造向量
- 如何使用 vector.begin() 将向量的向量打印到 vector.end()
- 使用std::begin()、std::end()将ArrayXd转换为stl向量,
- 公开begin()和end()的const和非const版本,以使用智能指针迭代成员向量
- 当字符串被" "或向量没有元素时,'begin()' 是否等于 'end()'?
- 为我的向量包装器和迭代器返回'begin'和'end'函数返回什么?
- map<int, 向量<int> > 图 和 graph[i].begin() 无法解析
- Vector:<int>:迭代器在设置时使用 begin 时从向量的末尾开始