Array 是固定大小的顺序容器:其拥有一定数目的元素并整理成一个严格的线性序列。
在内部一个数组容器不保存任何数据,除了本身的数组元素之外(即使它的大小是一个模板参数)。
它与普通数组声明存储空间大小[]的方式是一样有效的。
Array类仅仅只是增加了一层全局函数,以使它可以像标准容器一样使用。
与其他标准容器不同,Array的大小是确定的而且不会通过分配的运算符管理元素。Arrays是一种聚集类型封装了一个确定大小的元素数组。因此,Arrays不可以动态地扩大或缩小(可以参看相似的vector容器其大小是可以扩大的)。
零大小的Arrays是有效的,但是不可以被成员函数front、back、data间接引用。
与其他标准库中的容器操作不同,交换两个数组容器是一次性的操作单独地包含范围内所有元素的交换操作,这通常来说是一种相当有效的操作。换而言之这样可以允许元素的迭代器可以保留两个数组容器原始关联。
另一个唯一的特性就是Array容器可以作为tuple类处理,头文件<array>中重载了get函数存取数组中的元素,如果它是tuple以及专门的tuple_size和tuple_element类型。
下面贴一段代码,与vector相似,不同点在上面也说了,代码如下: //赋值
array<float,6>array1={34,23,45,12,22,56};
//迭代器(公有成员类型) 顺序输出方式一
for (auto iterator1=array1.begin();iterator1!=array1.end();++iterator1)
{
cout<<*iterator1<<' ';
}
cout<<endl;
//顺序输出方式二
for ( float& x : array1 ) std::cout <<x << ' ';
cout<<endl;
//顺序输出方式三
for (int i=0;i<6;i++)
{
cout<<array1.at(i)<<' ';
}
cout<<endl;
//顺序输出方式四
for (int i=0;i<6;i++)
{
cout<<array1[i]<<' ';
}
cout<<endl;
//逆序输出方式一
for (auto iterator1=array1.rbegin();iterator1!=array1.rend();++iterator1)
{
cout<<*iterator1<<' ';
}
cout<<endl;
//顺序输出方式五 const 不可更改
for (auto iterator1=array1.cbegin();iterator1!=array1.cend();++iterator1)
{
cout<<*iterator1<<' ';
}
cout<<endl;
//逆序输出方式 const 不可更改
for (auto iterator1=array1.crbegin();iterator1!=array1.crend();++iterator1)
{
cout<<*iterator1<<' ';
}
cout<<endl;
//array data操作
const array<float,6>array3={34,23,45,12,22,56};
array<float,6>array2;
memcpy(array2.data(),array3.data(),24);
for (auto iterator2=array2.begin();iterator2!=array2.end();++iterator2)
{
cout<<*iterator2<<' ';
}
cout<<endl;
cout<<array1.front()<<endl; //输出第一个元素
cout<<array1.back()<<endl; //输出最后一个元素
cout<<"size is :"<<array1.size()<<endl; //输出大小
cout<<"max size is:"<<array1.max_size()<<endl;
cout<<endl;
输出如下:
34 23 45 12 22 56
34 23 45 12 22 56
34 23 45 12 22 56
34 23 45 12 22 56
56 22 12 45 23 34
34 23 45 12 22 56
56 22 12 45 23 34
34 23 45 12 22 56
34
56
size is :6
max size is:6