# C++ 动态二维数组(二维vector)

50 篇文章 22 订阅

vector<int> vec(4,2); //将含有4个数据的一维动态数组初始为2
vector< vector<int> > asd1(row, vector<int>(column, 0)); //初始化row*column二维动态数组，初始化值为0

对于一维数组，可以使用size()获取其长度。
int size = asd.size();

int size_row = asd1.size();          //获取行数
int size_column = asd1[0].size();    //获取列数

直接赋值即可
asd1[1][1] = 1;
cout << asd1[1][1] <<endl;

asd1[1].push_back(23);   //插入列元素
asd1.push_back(asd);     //插入一行

auto test1 = asd1.begin();
asd1.erase(++test1);

auto test2 = test1.begin();
asd1[0].erase(++test2);

operation[ ]用于访问指定的元素返回对指定位置的元素的引用pos。如果只是简单的获取数据或查看数据使用a[row][column]即可。

void Print(vector<vector<int>> a)
{
vector<vector<int> >::iterator p1;
vector<int>::iterator p2;
for (p1 = a.begin(); p1 != a.end(); p1++)
{
for (p2 = p1->begin(); p2 != p1->end(); p2++)
{
cout << "[" << *p2 << "]";
}
cout <<endl;
}
cout <<endl;
}

#include <iostream>
#include <array>
#include <vector>
#include <cstring>

using namespace std;

void Print(vector<vector<int>> a)
{
vector<vector<int> >::iterator p1;
vector<int>::iterator p2;
for (p1 = a.begin(); p1 != a.end(); p1++)
{
for (p2 = p1->begin(); p2 != p1->end(); p2++)
{
cout << "[" << *p2 << "]";
}
cout <<endl;
}
cout <<endl;
}

int main()
{
int i = 0;
vector <int> asd(4,2); //将含有4个数据的一维动态数组初始为2
vector<std::vector<int> > asd1(4,vector<int>(4,0)); //初始化row*column二维动态数组，初始化值为0

vector<std::vector<int> >::iterator p1;
vector <int>::iterator p2;

//简单初始化
for (p1 = asd1.begin(); p1 != asd1.end(); p1++)
{
for (p2 = p1->begin(); p2 != p1->end(); p2++)
{
*p2 = i++;
}
}

cout << "Init:" <<endl;
Print(asd1);

//插入列元素用push_back
asd1[1].push_back(23);
asd1.push_back(asd);

/*
//设置行列数
int size_row = asd1.size();             //获取行数
cout << "size_row:" << size_row <<endl;
asd1.resize(10);                        //设置行数
size_row = asd1.size();                 //获取行数
cout << "size_row:" << size_row <<endl;

int size_col = asd1[0].size();
cout << "size_col:" << size_col <<endl;
asd1[1].resize(10);                     //设置列数
size_col = asd1[1].size();
cout << "size_col:" << size_col <<endl;
*/

cout << "Push_back:" <<endl;
Print(asd1);

cout << "Erase:" <<endl;
auto test1 = asd1.begin();
test1 = test1 + 3;
asd1.erase(test1);
Print(asd1);

return 0;
}

• 69
点赞
• 438
收藏
觉得还不错? 一键收藏
• 打赏
• 2
评论
04-10 1万+
04-04 1495
03-11 523
12-21 1266
05-29 361
03-12 1万+
11-02 1万+
04-24 2825
01-19 5万+
07-08 2131
10-29 5880
07-14 6762
05-12 2284
08-21 2336
09-21 1152
08-18 1265
11-18 3万+

### “相关推荐”对你有帮助么？

• 非常没帮助
• 没帮助
• 一般
• 有帮助
• 非常有帮助

Tyler_Zx

¥1 ¥2 ¥4 ¥6 ¥10 ¥20

1.余额是钱包充值的虚拟货币，按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载，可以购买VIP、付费专栏及课程。