C++学习12:数组array

来源:互联网 发布:相宜本草淘宝有假货吗 编辑:程序博客网 时间:2024/06/15 21:31

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

原创粉丝点击