永发信息网

C++ VECTOR对象复制的问题

答案:2  悬赏:80  手机版
解决时间 2021-02-02 06:32
  • 提问者网友:遮云壑
  • 2021-02-01 14:41
#include<iostream>
#include<vector>
using namespace std;
int main()
{

vector<int> ivec(10);
int i;
while(cin>>i)
ivec.push_back(i);
vector<int> ivec1(ivec);
cout<<ivec1[5]<<endl;
return 0;}
直接VECTOR的时候说过VECTOR的初始化可以用vector<T> b2(b1)
b2是b1的副本,可我按照这样的方式直接做上面那题错了,按照这样的方式执行的结果输出的0,说明ivec1复制的是最先开始的ivec对象,而不是之后push了i进去当元素的ivec,求解!为什么会这样呢b2是b1的副本,可我按照这样的方式直接做上面那题错了,不知道原因,求解中
最佳答案
  • 五星知识达人网友:街头电车
  • 2021-02-01 15:46
你应该打印全部的而不是其中1个。
vector<int> ivec(10);
这句构造了含有10个元素的ivec,值默认是0,后面再push_back也是在这后面增加。
比如再pushback了5个数后,就是:0,0,0,0,0,0,0,0,0,0,1,2,3,4,5
复制后输出下标5也就是第6个元素,显示0没有错
全部回答
  • 1楼网友:枭雄戏美人
  • 2021-02-01 15:55
#include <vector> #include <iostream> using namespace std; int main(){ vector<int> i; vector<int>::iterator it,jt; char c; bool k=false; while(cin.get(c)){ if(c=='\n')break; if(c<'0'||c>'9'){ k=false; continue; } if(!k){ k=true; i.push_back(0); } i[i.size()-1]*=10; i[i.size()-1]+=c-'0'; } printf("第一步:"); for(it=i.begin();it<i.end()-1;it+=2)printf("%d ",*it+*(it+1)); if(i.size()%2)printf("%d ",i.back()); printf("\b\n"); printf("第二步:"); for(it=i.begin(),jt=i.end()-1;it<jt;it++,jt--)printf("%d ",*it+*jt); if(it==jt)printf("%d ",*it); printf("\b\n"); return 0; }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯