std::array
来自cppreference.com
该页由英文版wiki使用Google Translate机器翻译而来。
该翻译可能存在错误或用词不当。鼠标停留在文本上可以看到原版本。你可以帮助我们修正错误或改进翻译。参见说明请点击这里. |
在头文件 <array> 中定义
|
||
template< class T, |
(C++11 起) | |
std::array
是固定元素个数的容器。
此容器的语义与相应C数组的语义相同。容器array<T,N>的大小等于相应C数组T[N]
的大小,且性能也与C数组相同。但是它提供了C++标准容器的相应特性,如可以查询容器大小,支持复制,支持随机迭代器等等。
对于长度为0的std::array<T,0>存在一个特例。此时array.begin() == array.end(),且等于某个特定值。对这种array
调用front()或back()的行为是未定义的。
array
是一个简单集合(没有构造函数,也没有私有或保护成员),故支持相应的初始化aggregate-initialization。
一个数组同时也可以当作一个有N
个相同类型元素的tuple
。
目录 |
[编辑] 成员类型
成员类型 | 定义 |
value_type
|
T
|
size_type
|
size_t |
difference_type
|
ptrdiff_t |
reference
|
value_type&
|
const_reference
|
const value_type&
|
pointer
|
T*
|
const_pointer
|
const T*
|
iterator
|
RandomAccessIterator
|
const_iterator
|
随机访问常迭代器 |
reverse_iterator
|
std::reverse_iterator<iterator> |
const_reverse_iterator
|
std::reverse_iterator<const_iterator> |
[编辑] 成员函数
元素访问 | |
访问指定的元素,同时进行越界检查 (公共成员函数) | |
访问指定的元素 (公共成员函数) | |
访问第一个元素 (公共成员函数) | |
访问最后一个元素 (公共成员函数) | |
返回指向内存中数组第一个元素的指针 (公共成员函数) | |
迭代器 | |
返回指向容器开始的迭代器 (公共成员函数) | |
返回指向容器尾端的迭代器 (公共成员函数) | |
返回一个指向容器最后一个元素的反向迭代器 (公共成员函数) | |
返回一个指向容器前端的反向迭代器 (公共成员函数) | |
容量控制 | |
检查是否容器是空的 原文: checks whether the container is empty (公共成员函数) | |
返回的元素数 (公共成员函数) | |
返回可能容纳的最大元素数 (公共成员函数) | |
操作 | |
使用指定的值填充容器 原文: fill the container with specified value (公共成员函数) | |
交换array 的内容 (公共成员函数) |
[编辑] 非成员函数
根据字典顺序比较的array中的值 原文: lexicographically compares the values in the array (函数模板) | |
访问array 的一个元素 (函数模板) | |
特化std::swap算法 (函数模板) |
[编辑] 辅助类
获得的 array 大小 (类模板特化) | |
array 的元素获得的类型 原文: obtains the type of the elements of array (类模板特化) |
[编辑] 例子
#include <string> #include <iterator> #include <iostream> #include <algorithm> #include <array> int main() { // construction uses aggregate initialization std::array<int, 3> a1{ {1,2,3} }; // 除非使用=,否则需要 std::array<int, 3> a2 = {1, 2, 3}; // 使用双重花括号 std::array<std::string, 2> a3 = { {std::string("a"), "b"} }; // 支持基本的容器操作 std::sort(a1.begin(), a1.end()); std::reverse_copy(a2.begin(), a2.end(), std::ostream_iterator<int>(std::cout, " ")); // 支持范围for for(auto& s: a3) std::cout << s << ' '; }
输出:
3 2 1 a b