#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的副本,可我按照这样的方式直接做上面那题错了,不知道原因,求解中
C++ VECTOR对象复制的问题
答案:2 悬赏:80 手机版
解决时间 2021-02-02 06:32
- 提问者网友:遮云壑
- 2021-02-01 14:41
最佳答案
- 五星知识达人网友:街头电车
- 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没有错
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;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯