vector定义二维数组之后,在子容器添加元素的方法——即扩充列元素。

时间:2022-06-06 04:18:13
就想问一下,vector定义二维数组之后,如何在嵌套的vector容器里面push元素。
注意,是扩充子容器元素。如果定义一个中间容器作为过渡,就要删除原来的行再加入新行,题目要求是不能更改顺序的。代码如下,Arr[i].push_back(arr[i][j]); 位置报错。

int main(){
int arr[3][3] = {{1,2,3},{2,3,4},{3,4,5}};
  vector<vector<int> > Array(3, vector<int>(3));

for(int i=0; i<3; i++){
for(int j=0; j<3; j++){
Arr[i].push_back(arr[i][j]);
}
}
for(int i=0; i<3; i++){
cout<<Arr[i][1];
}
return 0;
}

5 个解决方案

#1


vector<vector<int> > Array(3, vector<int>(3)); 
Arr[i].push_back(arr[i][j]);
这是笔误,编译没成功吧

#2


@lm_whales 编译可以通过,但是输出结果:000
也就是说arr数组里面的值并没有赋值给Arr

#3


Arr自构造起就是一个3x3的矩阵了,你再push_back就变成3x6了,单纯复制值的话Arr[i][j]=arr[i][j]就可以了

#4


编译通过,那就是抄错了,
Arr应该是 Array
正确的代码确实不需要pash_back 除非真的想扩张数组
数组扩张以后,多于 3*3了

#5


@lm_whales ,@iyomumx ,知道了~把扩充理解成赋值了
代码改来改去改错了,Array应该改成Arr,嘿嘿
谢谢各位

#1


vector<vector<int> > Array(3, vector<int>(3)); 
Arr[i].push_back(arr[i][j]);
这是笔误,编译没成功吧

#2


@lm_whales 编译可以通过,但是输出结果:000
也就是说arr数组里面的值并没有赋值给Arr

#3


Arr自构造起就是一个3x3的矩阵了,你再push_back就变成3x6了,单纯复制值的话Arr[i][j]=arr[i][j]就可以了

#4


编译通过,那就是抄错了,
Arr应该是 Array
正确的代码确实不需要pash_back 除非真的想扩张数组
数组扩张以后,多于 3*3了

#5


@lm_whales ,@iyomumx ,知道了~把扩充理解成赋值了
代码改来改去改错了,Array应该改成Arr,嘿嘿
谢谢各位