C++ vector 向量中的泛型指针问题求大侠解答

我看到书上有个例子,在把它输入编译器(vs2010)中执行就会报错,后来检查主要问题在下面代码注释部分,请问大侠是什么原因造成,如果要正确正向和逆向输出该怎么改?#inc... 我看到书上有个例子,在把它输入编译器(vs2010)中执行就会报错,后来检查主要问题在下面代码注释部分,请问大侠是什么原因造成,如果要正确正向和逆向输出该怎么改?

#include<iostream>
#include<vector>
#include<iterator>

using namespace std;

void main()
{
char st[13]="abcdefghij ";
vector<char>a(st,st+10);
vector<char>::iterator p;
vector<char>::reverse_iterator ps;

for(p=a.begin();p!=a.end();++p)
cout<<*p<<" ";
cout<<endl;
for(p=a.end()-1;p!=a.begin()-1;--p) ///////////》》》》》》》for循环中间的判断在编译器中可以通过编译,但是执行时会弹对话框报错(对话框如下图片),但是如果去掉,在逆向输出又少输出一个a。
cout<<*p<<" ";
cout<<endl;
for(ps=a.rbegin();ps!=a.rend();++ps)
cout<<*ps<<" ";
cout<<endl;
for(--ps;ps!=a.rbegin()-1;--ps) ///////》》》》》与上面的注释一样。
cout<<*ps<<" ";
}
展开
 我来答
乜天沅22
2016-05-23 · 超过21用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:37.8万
展开全部
如果p==a.begin()-1,这个p已经越界了,自然会出问题,不能跟a.begin()-1进行判断。
如果你觉得p==a.begin()之后会调出循环,少输一个a,那可以在循环外在加一次赋值,如
if (p==a.begin())
{
//赋值
}
或者把for循环改成do while循环。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式