std::get(std::array)
来自cppreference.com
定义于头文件 <array>
|
||
(1) | ||
template< std::size_t I, class T, std::size_t N > T& get( std::array<T,N>& a ) noexcept; |
(C++11 起) (C++14 前) |
|
template< std::size_t I, class T, std::size_t N > constexpr T& get( std::array<T,N>& a ) noexcept; |
(C++14 起) | |
(2) | ||
template< std::size_t I, class T, std::size_t N > T&& get( std::array<T,N>&& a ) noexcept; |
(C++11 起) (C++14 前) |
|
template< std::size_t I, class T, std::size_t N > constexpr T&& get( std::array<T,N>&& a ) noexcept; |
(C++14 起) | |
(3) | ||
template< std::size_t I, class T, std::size_t N > const T& get( const std::array<T,N>& a ) noexcept; |
(C++11 起) (C++14 前) |
|
template< std::size_t I, class T, std::size_t N > constexpr const T& get( const std::array<T,N>& a ) noexcept; |
(C++14 起) | |
(4) | ||
template< std::size_t I, class T, std::size_t N > const T&& get( const std::array<T,N>&& a ) noexcept; |
(C++11 起) (C++14 前) |
|
template< std::size_t I, class T, std::size_t N > constexpr const T&& get( const std::array<T,N>&& a ) noexcept; |
(C++14 起) | |
从 array
提取第 I
个元素。
I
必须是范围 [0, N)
中的整数值。与 at() 或 operator[] 相反,这在编译时强制。
参数
a | - | 要提取其内容的数组 |
返回值
到 a
的第 I
元素的引用。
时间复杂度
常数。
示例
运行此代码
#include <iostream> #include <array> int main() { std::array<int, 3> arr; // 设置值: std::get<0>(arr) = 1; std::get<1>(arr) = 2; std::get<2>(arr) = 3; // 获取值: std::cout << "(" << std::get<0>(arr) << ", " << std::get<1>(arr) << ", " << std::get<2>(arr) << ")\n"; }
输出:
(1, 2, 3)
缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
DR | 应用于 | 出版时的行为 | 正确行为 |
---|---|---|---|
LWG 2485 | C++11 | 无对于 const array&& 的重载 | 添加重载 |
参阅
结构化绑定 (C++17) | 绑定指定的名字到初始化器的子对象或元组元素 |
(C++11) |
访问指定的元素 (公开成员函数) |
(C++11) |
访问指定的元素,同时进行越界检查 (公开成员函数) |
元组式访问指定的元素 (函数模板) | |
(C++11) |
访问 pair 的一个元素 (函数模板) |
(C++17) |
以给定索引或类型(若类型唯一)读取 variant 的值,错误时抛出异常 (函数模板) |