返回

动态数组进阶

发布时间:2023-05-17 18:10:13 33
# 数据

一、用动态数组储存自定义数据

动态数组不仅仅可以储存基本的数据类型,还能存储自定义数据类型,比如结构体。

二、构造函数减少代码量

我们知道可以通过push_back()来向动态数组添加一个元素。如果我们需要一个长度为n的,全是1的动态数组。可以利用循环来写。

动态数组进阶_二维

其实我们可以通过一个构造函数快速构建动态数组。所谓构造函数,就是我们在定义一个对象时可以给他赋予初始值。

动态数组进阶_构造函数_02

我们在定义一个vector的时候,调用构造函数,第一个参数表示初始的动态数组的长度,第二个参数表示初始的数组里面每个元素的值,如果不传入第二个参数,那么初始值就是0

注意是直接在数组名后面接上(,)

 

三、二维动态数组

vector<vector > vec2,这样就定义了一个二维的动态数组。

注意: >中间有一个空格,这个空格一定要加上,否则在一些老版本的编译器上将不能通过编译。

二维动态数组的每一维的长度都可以不一样,可以是任意形状的,借助构造函数,我们可以快速构造一个n行m列的动态数组,每个元素的初始值都是0.

vector<vector >vec2(n,vector(m,0));

例题:尝试修复以下代码,使之不会访问非法内存空间

动态数组进阶_构造函数_03

ABC都是对的,其中C选项第二维不传,默认就是空的,D项不对,我们不能传10,应该传vector变量

例题:用动态数组实现乘法表

TIP:

a.push_back()和a[i].push_back()的区别

a.push_back()表示对动态二维数组第一维赋值,赋值内容一般是vector变量

a[i].push_back()表示对动态二维数组第二维赋值

#include
using namespace std;

int main()
{
vector<vector >a;//定义二维动态数组
for (int i=0;i<5;i++)
{
a.push_back(vector());
}//为5维动态数组,小vector内为空
for (int i=0;i<a.size();i++)
{
for (int j=0;j<=i;j++)
{
a[i].push_back((i+1)*(j+1));//对二维数组赋值
}
}
for (int i=0;i<a.size();i++)
{
for (int j=0;j<a[i].size(); j++)
{
cout << i + 1 << '*' << j + 1 << '='<<a[i][j] << '\t';//\t为制表符,每一列对齐
}
cout << endl;
}
return 0;
}
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
C语言---选择结构 2023-05-17 14:52:21