本篇文章是C++ STL学习专栏的第二篇文章,也是教程的起点,希望能够通过一篇文章介绍一些常用的使用方法,解决小白在使用STL的烦恼。本篇文章将会介绍序列式容器array。简单来说,在序列容器中,元素的位置同元素的值无关,即容器是不排序的的,元素在什么指定位置插入就会存放在什么位置。如果已经有C++编译环境的小伙伴也可以直接到文章底部复制代码(代码可以直接运行,并且会覆盖本文所有内容,同时有详细的注释),进行编译,对照着结果和注释学习,可以自己动手改改,这样学起来效果更好,同时本文如果有什么错漏大家可以在评论区留言。
希望了解其他内容的可以点击底部的传送门进入STL学习专栏,目前仍在更新中!
array即数组容器,一旦建立,其长度是固定的,也就意味着它不能增加或删除元素,只能够改变某个元素的值;
array容器定义在
头文件中,构建一个array容器的方法是array
,其中,class
是只数组中存的数据的数据类型,size
是指构建的容器的大小,name则是构建容器对象的名字。
下面将展示构建一个数据类型为整型,而大小为5的array容器
#include
#include
using namespace std;
int main()
{
array a;
array b ={1,2,3,4,5};
array c {1,2,3,4,5};
array d = b;
a.fill(1)//成员函数,将数组a的所有元素设置为1;
}
array容器常用的访问方法主要有以下几种
at()
访问,但相较于上一种方式,当i越界时,会给出std::out_of_range
的报错。a[i] //以下标访问
a.at(i)//等价于a[i],
arr.begin();//返回指向第一个元素的迭代器
arr.end();//返回指向队尾元素下一个元素的迭代器
arr.rbegin(); //返回指向最后一个元素的迭代器
arr.rend();//返回指向第一个元素前一个元素的迭代器
//成员函数访问:
arr.front();//返回第一个元素
arr.back();//返回最后一个元素
//使用下标
for(int i=0; i < a.size(); i++)
{
cout<
成员函数 | 功能 |
---|---|
begin() | 返回指向容器中第一个元素的随机访问迭代器 |
end() | 返回指向容器最后一个元素之后一个位置的随机访问迭代器,通常和 begin() 结合使用。 |
cbegin() | 和 begin() 功能相同,只不过在其基础上增加了 const 属性,不能用于修改元素。 |
cend() | 和 end() 功能相同,只不过在其基础上,增加了 const 属性,不能用于修改元素。 |
rbegin() | 返回指向最后一个元素的随机访问迭代器。 |
rend() | 返回指向第一个元素之前一个位置的随机访问迭代器。 |
crbegin() | 返回指向最后一个元素的随机访问迭代器。 |
crend() | 和 rend() 功能相同,只不过在其基础上,增加了 const 属性,不能用于修改元素。 |
size() | 返回容器中当前元素的数量,其值始终等于初始化 array 类的第二个模板参数 N。 |
max_size() | 返回容器可容纳元素的最大数量,其值始终等于初始化 array 类的第二个模板参数 N。 |
empty() | 判断容器是否为空,和通过 size()==0 的判断条件功能相同,但其效率可能更快。 |
at(n) | 返回容器中 n 位置处元素的引用,该函数自动检查 n 是否在有效的范围内,如果不是则抛出 out_of_range 异常。 |
front() | 返回容器中第一个元素的直接引用,该函数不适用于空的 array 容器。 |
back() | 返回容器中最后一个元素的直接引用,该函数同样不适用于空的 array 容器。 |
data() | 返回一个指向容器首个元素的指针。利用该指针,可实现复制容器中所有元素等类似功能。 |
fill(val) | 将 val 这个值赋值给容器中的每个元素。 |
array1.swap(array2) | 交换 array1 和 array2 容器中的所有元素,但前提是它们具有相同的长度和类型。 |
下面展示一些 内联代码片
。
#include
#include
#include
using namespace std;
void show(array &b)
{
for(int i = 0; i< b.size();i++){
cout< a;
array b ={1,2,3,4,5};
array c {1,2,3,4,5};
array d = b;
a.fill(1);//成员函数,将数组a的所有元素设置为1;
//输出查看
cout << "构建array函数"< a; :";
show(a);
cout << setiosflags(ios::left)< b ={1,2,3,4,5};";
show(b);
cout << setiosflags(ios::left)< c {1,2,3,4,5};";
show(c);
cout << setiosflags(ios::left)< d = b;";
show(d);
/********************************访问元素**************************************************/
cout<
STL学习专栏传送门