C++ 中的vector iterator offset out of range问题
2018-03-20 13:25
781 查看
C++ primer 3.24 迭代器问题
错误代码展示:#include "stdafx.h"
#include <string>
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int number,i,j;
vector <int > text;
vector <int> text1;
auto beg = text.begin();
auto end = text.end()-1;
while (cin >> number)
{
text.push_back(number);
}
while (beg<=end)
{
auto s = *beg +( *end);
text1.push_back(s);
beg = beg + 1;
end = end - 1;
}
for (auto it = text1.begin();it != text1.end();it++)
{
cout << *it << endl;
}
return 0;
}该程序主要目的是运用迭代器求取一组数前后两个数的和。运行后进行报错:
vector iterator offset out of range
经过观察和进行检查后,发现在用迭代器对vector容器进行操作时,vector容器不能为空。
while (cin>>number)的位置在应用迭代器之后,因此,我们需要将其提前。
正确代码如下:
#include "stdafx.h"
#include <string>
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int number,i,j;
vector <int > text;
vector <int> text1;
while (cin >> number)
{
text.push_back(number);
}
auto beg = text.begin();
auto end = text.end()-1;
while (beg<=end)
{
auto s = *beg +( *end);
text1.push_back(s);
beg = beg + 1;
end = end - 1;
}
for (auto it = text1.begin();it != text1.end();it++)
{
cout << *it << endl;
}
return 0;
}
错误代码展示:#include "stdafx.h"
#include <string>
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int number,i,j;
vector <int > text;
vector <int> text1;
auto beg = text.begin();
auto end = text.end()-1;
while (cin >> number)
{
text.push_back(number);
}
while (beg<=end)
{
auto s = *beg +( *end);
text1.push_back(s);
beg = beg + 1;
end = end - 1;
}
for (auto it = text1.begin();it != text1.end();it++)
{
cout << *it << endl;
}
return 0;
}该程序主要目的是运用迭代器求取一组数前后两个数的和。运行后进行报错:
vector iterator offset out of range
经过观察和进行检查后,发现在用迭代器对vector容器进行操作时,vector容器不能为空。
while (cin>>number)的位置在应用迭代器之后,因此,我们需要将其提前。
正确代码如下:
#include "stdafx.h"
#include <string>
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int number,i,j;
vector <int > text;
vector <int> text1;
while (cin >> number)
{
text.push_back(number);
}
auto beg = text.begin();
auto end = text.end()-1;
while (beg<=end)
{
auto s = *beg +( *end);
text1.push_back(s);
beg = beg + 1;
end = end - 1;
}
for (auto it = text1.begin();it != text1.end();it++)
{
cout << *it << endl;
}
return 0;
}
相关文章推荐
- C++泛型指针的正向与逆向循环读取时报错Expreeeion:vector iterator + offset out of range问题
- C++ 使用vector 出现"vector iterator not incrementable"或"vector iterator + offset out of range"错误的情况
- C++学习之路(14)---vector报错:vector iterator not incrementable"或"vector iterator + offset out of range"
- kafka-storm spout拉取数据问题offset out of range(todo)
- vector subscript out of range问题解决方案之一
- Kafka kafka.common.OffsetOutOfRangeException 问题处理
- kafka-storm spout拉取数据问题offset out of range
- 容器赋值 容器使用问题:vector subscript out of range
- kafka.common.OffsetOutOfRangeException 问题处理
- 【C++】bug之vector subscript out of range
- 使用PCL的IntegralImageNormalEstimation遇到的vector subsript out of range问题
- Kafka 副本OffsetOutOfRangeException
- java.lang.IllegalArgumentException:pointerIndex out of range问题的两种解决办法
- 关于String index out of range: -1报错问题
- BIRT出现java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0)的问题
- 将int字段改为decimal类型后出现1264 Out of range value的问题分析和处理之二
- Caused by: kafka.common.OffsetOutOfRangeException
- 遇到的一个"String index out of range" 问题
- Java中long类型直接赋值出现The literal xxxxxxxxxx of type int is out of range 问题的原因和解决方法
- h2 DB的一个问题,关于类型--Numeric value out of range