std::array 相对于 std::vector 而言,提供了静态数组,编译时确定大小、更轻量、更效率。
当然也比 std::vector 有更多局限性。
但是相对于普通的数组,又更加安全,更加方便,比如at访问可以判断是否下标越界。
提供了 STL 的各种迭代器、算法、操作方法等,用起来舒服。
差不多就是 vector 和数组的中间版本。
操作函数:
方法 | 操作 |
begin | 返回指向数组容器中第一个元素的迭代器 |
end | 返回指向数组容器中最后一个元素之后的理论元素的迭代器 |
rbegin | 返回指向数组容器中最后一个元素的反向迭代器 |
rend | 返回一个反向迭代器,指向数组中第一个元素之前的理论元素 |
cbegin | 返回指向数组容器中第一个元素的常量迭代器(const_iterator) |
cend | 返回指向数组容器中最后一个元素之后的理论元素的常量迭代器(const_iterator) |
crbegin | 返回指向数组容器中最后一个元素的常量反向迭代器(const_reverse_iterator) |
crend | 返回指向数组中第一个元素之前的理论元素的常量反向迭代器(const_reverse_iterator) |
size | 返回数组容器中元素的数量 |
max_size | 返回数组容器可容纳的最大元素数 |
empty | 返回一个布尔值,指示数组容器是否为空 |
operator[] | 返回容器中第 n(参数)个位置的元素的引用 |
at | 返回容器中第 n(参数)个位置的元素的引用 |
front | 返回对容器中第一个元素的引用 |
back | 返回对容器中最后一个元素的引用 |
data | 返回指向容器中第一个元素的指针 |
fill | 用 val(参数)填充数组所有元素 |
swap | 通过 x(参数)的内容交换数组的内容 |
get(array) | 传入数组容器,返回指定位置元素的引用 |
relational operators | 形如 arrayA > arrayB;依此比较数组每个元素的大小关系 |
测试代码:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <string>
#include <vector>
#include <queue>
#include <sstream>
#include <stack>
#include <map>
#include <ctime>
#include <array>
using namespace std;
int main()
{
int i, j;
int n;
array <int, 20> num{};
cin >> n;
for (i = 0; i < n; i++)
cin >> num.at(i);
sort(num.begin(), num.end());
for (auto i : num)
cout << i << endl;
return 0;
}
输入:
5
5 4 3 2 1
程序输出:
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
2
3
4
5