A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

之前学习了向量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部分功能可用,但不完善,为了安全,还是不要使用。

4 个回复

倒序浏览
回复 使用道具 举报
棒棒哒
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马