C++:数组array

之前学习了向量vector,其效率稍低,在C++中新增了模板类数组array,效率和数组相同。

数组array长度是固定的,使用栈存储,和数组效率相同,但更方便、安全。

创建方法:

array<typeName, n_elem> ad;

和vector略有不同,array一定要在<>第二个参量位置定义长度n_elem。
例如:

array<int,4> arr = {1,2,3,4};

可以看到array是可以通过列表初始化的。书中提到在C++11中,vector也已经支持列表初始化。

和vector相同,对array对象进行操作和数组一样:

array<int,4> arr = {1,2,3,4};
cout << arr[0] << arr[1] << arr[2] << arr[3] << endl;


array类定义了很多成员函数,可以直接完成对存储元素的操作:

begin 返回指向容器起始位置的迭代器(iterator) end 返回指向容器末尾位置的迭代器
rbegin 返回指向容器逆序起始位置的逆序迭代器(reverse_iterator) rend 返回指向容器逆序末尾位置的逆序迭代器
cbegin 返回指向容器起始位置的常迭代器(const_iterator) cend 返回指向容器末尾位置的常迭代器
crbegin 返回指向容器逆序起始位置的常逆序迭代器(const_reverse_iterator)
crend 返回指向容器逆序末尾位置的常逆序迭代器
另外,array是支持 = 赋值的,但 = 两边的array长度相等,否则会报错。也就是说array的 = 赋值是完善的,可以放心使用。

    array<int,4> arr0 = {1,2,3,4};
    array<int,4> arr1;
    array<int,5> arr2;
        arr1 = arr0;   //正确
        arr2 = arr0;   //错误,长度不同,无法通过编译
    cout << arr1[0] << arr1[1] << arr1[2] << arr1[3] << endl;

最后来看下array和vector的区别:
1、array是定长的,必须定义长度,定义后不可改变,而vector不需要,长度可变,vector提供了成员函数可实现增添、删除元素。
2、定义长度的方法不同,array放在<>中,vector放在最后的()处,而且array的长度定义只能使用常量,vector还可以使用变量。
3、等号 = 赋值。array的=赋值是完善的,可以放心使用;vector部分功能可用,但不完善,为了安全,还是不要使用。

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值