比较C++中数组,vector,array

一、数组
这里不再细说。数组不可以使用变量来规定数组的长度。

二、模板类vector
他类似于string类,也是一种动态数组。可以自己在运行时设置数组长度,也可以添加元素,插入元素。vector使用new和delete来操作内存,但是是自动完成。

#include <vector>
...
using namespace std;
int main()
{
    int n;
    cin>>n;//通过输入获取数组长度
    vector<double> v(n);//创建了n个长度的double类型模板
    v[0]=32.2;
    return 0;
}

使用:
vector v (length);

三、模板类array
array的数组是固定长度的。不是动态的。和普通数组一样面试用栈(静态内存分配)来存储,而不是自由存储区,因此效率和普通数组一样,但是更安全,更方便。

#include<array>
...
using namespace std;
int main()
{
    array<int ,10 > x;//长度为10的int类型数组
    array<int ,3 > y={2,4,1};
    array<int ,3 > z;
    z=y;//这里array的赋值,比标准数组方便,不需要逐个进行赋值
    return 0;
}

四、三者的区别
无论是array还是vector都可以用标准数组的访问方式来访问数据。
但是这样可能导致数组越界的情况发生。vector,array可以使用at方法来避免这样错误发生,而且他们也有不同的方法来进行各种各样的操作,比标准数组方便很多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值