C++:数组array

贾珍
• 阅读 136

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

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
java反射Array的使用
1.什么是ArrayArray是一个类的简写,全限定类名是java.lang.reflect.Array.2.Array有什么用Array可以代表所有的数组,可以通过Array动态创建与修改里面的元素.3.Array使用示例(1)创建使用静态方法newI
Wesley13 Wesley13
3年前
java.util.Arrays,java.lang.Math,java.lang.System 类的常用方法汇总
java.util.Arrays类是数组的工具类,一般数组常用的方法包括二分查找:publicstaticint binarySearch(array\\,intkey),返回key的下标index扩容缩容:publicstaticint\\ copyOf(array\\,newLength),返回新数组取部分:publ
Stella981 Stella981
3年前
PHP使用array_unique对二维数组去重处理
array\_unique函数就是可以处重的,它具备了这个功能了,下面我们一来看一个关于PHP使用array\_unique对二维数组去重处理例子。php5.2.9版本增加了array\_unique对多维数组的支持,在处理多维数组是需要设置sort\_flags参数一维数组的重复项:使用array\_unique函数即可,使用实例如下:
Wesley13 Wesley13
3年前
AS3 数组
varfoo:Array"one","two","three";trace(foo1);//"tow",数组下标从0开始trace(foo.length);//3Array的length属性是可读可写的,这与Java不同,在Java中,数组一旦定义好长度,就无法再更改
Stella981 Stella981
3年前
C# 数组之ArrayList
一、引言ArrayList类相当于一种高级的动态数组,是Array类的升级版本。一般的Array,底层是数组实现的,对于数据的查找和修改十分高效。但是有2个大的缺点,其一为增删低效,其二为数组长度时固定的,无法动态增加长度。与一般的Array相比,ArrayList主要可以动态增加数组的长度。尽管实现了数据增删,但是由于底层
Stella981 Stella981
3年前
JS关于Array的方法介绍
Array.length:数组的一条属性。基本用法:letarray1,2,3,4,5;console.log(array.length);//5Array.prototype:数组原型console.log(Array.prototype);//ObjectArray.isArr
Stella981 Stella981
3年前
Javascript数组系列一之栈与队列
所谓数组(英语:Array),是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。---百度百科简单理解,数组就是数据的有序列表。Array在Javascript中属于最常用的数据类型之一了,与其它语言一样Javascript中的数
Stella981 Stella981
3年前
Map、Set、List集合差别及联系详解
前言:数组Array和集合的区别:1、数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型)2、JAVA集合可以存储和操作数目不固定的一组数据。3、若程序时不知道究竟需要多少对象,需要在空间不足时自动扩增容量,则需要使用容器类库,array不适用。 注:使用相应的toArray()和Arrays.asList()方法
小万哥 小万哥
1年前
NumPy 数组创建方法与索引访问详解
NumPy创建数组NumPy中的核心数据结构是ndarray,它代表多维数组。NumPy提供了多种方法来创建ndarray对象,包括:使用array()函数array()函数是最常用的方法之一,它可以将Python列表、元组甚至其他数组转换为ndarray
小万哥 小万哥
1年前
NumPy 数组迭代与合并详解
NumPy数组迭代NumPy数组迭代是访问和处理数组元素的重要方法。它允许您逐个或成组地遍历数组元素。基本迭代我们可以使用Python的基本for循环来迭代NumPy数组。一维数组迭代:pythonimportnumpyasnparrnp.array(1
小万哥 小万哥
1年前
NumPy 分割与搜索数组详解
NumPy分割数组NumPy提供了np.arraysplit()函数来分割数组,将一个数组拆分成多个较小的子数组。基本用法语法:pythonnp.arraysplit(array,indicesorsections,axisNone)array:要分割的N