C++---array

来源:互联网 发布:矩阵的微分运算法则 编辑:程序博客网 时间:2024/05/31 19:06

array简介(C++11提供的定长数组替代品-模板类)

1. Vecto类的功能比数组强大,但付出的代价是效率稍低。如果你需要的是长度固定的数组,使用数组是更加的选择。但代价是不那么方便和安全。有鉴于此,C++11新增了模板类array,它也位于名称空间std中。与数组一样,array对象的长度也是固定的,也使用栈(静态内存分配),而不是自由存储区,因此其效率与数组相同,但更方便,更安全。要创建array对象,需要包含头文件arrayarray对象的创建语法与vector稍有不同:

#include <array>

. . . . . .

using namespace std;

array <int, 5> ai;  //create array object of 5 ints

array <double, 5> ad = {1.2,  2.1,  3.43,  4.3};

推而广之,下面的声明创建一个名叫arrarray对象,它包含n_elem个类型为typename的元素:

array <typename, n_elem> arr;

与创建vector对象不同的是,n_elem不能是变量。

C++中,可将列表初始化用于vectorarray对象,但在C++98中,不能对vector对象这样做。

2.首先,注意到无论是数组.vector对象还是array对象,都可使用标准数组表示法来访问各个元素。其次,从地址可知,array对象和数组存储在相同的内存区域(栈)中。第三,注意到可以将array对象可以赋值给另一个array对象;而对于数组,必须一个一个元素复制数据。

3.详细的函数如下:

array.at(pos);   

array.front();       array.back();

array.begin();      array.end();

array.cbegin();     array.cend();

array.rbegin();     array.rend();

array.crbegin();    array.crend();

array.size();       array.max_size();

array.data();    array.empty();

array.operator[];   array1.swap(array2);  

array.fill(num);

原创粉丝点击