永发信息网

一小段C++程序,高手来看看

答案:2  悬赏:10  手机版
解决时间 2021-04-16 21:39

以下是我用C++代码写的关于插入排序法的算法。同样的代码我用数组来排序时没出错,改成vector的容器却出错。。。运行是却说内存不能为read.这是为什么?

#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int>ivec;
int a,t;
while(cin>>a)
ivec.push_back(a);
for(vector<int>::iterator it=ivec.begin()+1;it!=ivec.end();++it)
{
int key=*it;
for(vector<int>::iterator is=it-1;is>0,*is>key;--is)
{
t=*is;
*is=*(is-1);
*(is-1)=t;
}
}

for(vector<int>::iterator iv=ivec.begin();iv!=ivec.end();++iv)
cout<<*iv<<" ";
cout<<endl;
return 0;
}

最佳答案

如下代码:


主要错误是访问容器越界了,你可能是受到先做的那个数组的影响,而忽略了对容器越界的检查


for(vector<int>::iterator is=it-1;is>0,*is>key;--is)
{
t=*is;
*is=*(is-1);
*(is-1)=t;
}
错在这里。。。你应该能看出来的。。。。。


#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int>ivec;
int a,t;
while(cin>>a)
ivec.push_back(a);


for(vector<int>::iterator it=ivec.begin()+1;it!=ivec.end();++it)
{
int key=*it;
for(vector<int>::iterator is=it-1;is>=ivec.begin()&&*is>key;--is)
{
t=*(is+1);
*(is+1)=*is;
*is=t;
}
}


for(vector<int>::iterator iv=ivec.begin();iv!=ivec.end();++iv)
cout<<*iv<<" ";
cout<<endl;
return 0;
}

全部回答
#include<iostream> #include<vector> using namespace std; int main() { vector<int>ivec; int a,t; while(cin>>a) ivec.push_back(a); for(vector<int>::iterator it=ivec.begin()+1;it!=ivec.end();++it) { int key=*it; for(vector<int>::iterator is=it-1;is>=ivec.begin() && *is>key;--is) { *(is+1) = *is; } *(is+1) = key; } for(vector<int>::iterator iv=ivec.begin();iv!=ivec.end();++iv) cout<<*iv<<" "; cout<<endl; return 0; }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
as long as you love me
分手的经典句子,分手时霸气用的古诗句
我想问一下每个月月经三天完后有黑色或综色血
什么叫滥情?
米道赞粥面馆地址在哪,我要去那里办事
爸爸妈妈对孩子祝福语,最温馨的祝福语
焦作峰林峡开业了么
回不了家怎么办?
孕妇为什么对牙膏反胃呢?
表示很感激别人的诗句,形容人格分裂的奇葩句
寿昌公铁立交在哪里啊,我有事要去这个地方
■■■北京地区那里有卖奥尔良腌料的?
用英文如何填写中国地址,格式怎么样的
我的手机发一条短信息对方怎么收到两个呢
超级音频解霸
推荐资讯
质量守衡定律,化学式C21 H30 O2+O2→CO2+H2O
西乡塘的美食会在哪啊?!
手机上怎么发帖?
关于忍受的名言,善于接受他人的指责的名言
文学:请问杏坛和杏林分别有什么含义?
从山东临沂做车几个小时到山东烟台
工会开职工大会表决重要事项,可以委托投票吗?
京津首饰加工我想知道这个在什么地方
小莉看一本书,5天看了全书的20%,照这样计算,
家园怎么看有多少好友?
刘亦菲的官网是多少
真的能美白吗?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?