在C++11标准之前,STL中并没有array这个容器。程序员们主要使用C风格数组和vector来管理序列数据,但这两种方式都存在各自的局限性。C风格数组过于简单,无法动态调整大小;vector虽然安全好用,但是过于笨重。至此,array容器孕育而生。array本质上是对C风格数组的轻量级封装,保留了性能优势的同时增加了安全性。
下表展示了array容器支持的成员函数和成员变量:
成员函数 | 功能说明 |
begin() | 返回指向第一个元素的正向迭代器;对于const array返回常量正向迭代器 |
end() | 返回指向最后一个元素之后位置的正向迭代器;对于const array返回常量正向迭代器。通常与begin()配对使用 |
rbegin() | 返回指向最后一个元素的反向迭代器;对于const array返回常量反向迭代器 |
rend() | 返回指向第一个元素之前位置的反向迭代器;对于const array返回常量反向迭代器。通常与rbegin()配对使用 |
cbegin() | 返回常量正向迭代器,无论array是否为const,都不能用于修改元素 |
cend() | 返回常量正向迭代器,无论array是否为const,都不能用于修改元素 |
crbegin() | 返回常量反向迭代器,无论array是否为const,都不能用于修改元素 |
crend() | 返回常量反向迭代器,无论array是否为const,都不能用于修改元素 |
这么使用array呢,举个例子:
#include<bits/stdc++.h> /* array容器基本操作示例 */ using namespace std; void test() { array<int,5> arr; /* 通过迭代器赋值初始化 */ array<int,5>::iterator beg = arr.begin(); array<int,5>::iterator end = arr.end(); int t = 1; while(beg != end) { *beg = t; ++beg; ++t; } for(int i = 0; i < 5; ++i) cout << arr[i] << " "; cout << '\n'; /*知识点,cbegin、cend等表示可读不可改 这里c的意思是const*/ } int main(){ test(); return 0; }
总结:通过创建array容器,简单使用一些array的成员函数,我们成功掌握array的基本知识。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程