Namespaces
Variants

std:: get (std::array)

From cppreference.net
定义于头文件 <array>
template < std:: size_t I, class T, std:: size_t N >
T & get ( std:: array < T,N > & a ) noexcept ;
(1) (C++11 起)
(C++14 起为 constexpr)
template < std:: size_t I, class T, std:: size_t N >
T && get ( std:: array < T,N > && a ) noexcept ;
(2) (C++11 起)
(C++14 起为 constexpr)
template < std:: size_t I, class T, std:: size_t N >
const T & get ( const std:: array < T,N > & a ) noexcept ;
(3) (C++11 起)
(C++14 起为 constexpr)
template < std:: size_t I, class T, std:: size_t N >
const T && get ( const std:: array < T,N > && a ) noexcept ;
(4) (C++11 起)
(C++14 起为 constexpr)

使用 类元组 接口从数组中提取第 I 个元素。

I 必须是一个位于 [ 0 , N ) 范围内的整数值。与 at() operator[] 不同,此约束在编译时强制执行。

目录

参数

a - 待提取内容的数组

返回值

a 的第 I th 个元素的引用。

复杂度

常量。

示例

#include <array>
#include <iostream>
constexpr std::array v{1, 2, 3};
static_assert(get<0>(v) == 1 && get<1>(v) == 2 && get<2>(v) == 3);
int main()
{
    std::array<int, 3> a;
    // 设置值:
    get<0>(a) = 1, get<1>(a) = 2, get<2>(a) = 3;
    // 获取值:
    std::cout << '(' << get<0>(a) << ',' << get<1>(a) << ',' << get<2>(a) << ")\n";
}

输出:

(1,2,3)

缺陷报告

以下行为变更缺陷报告被追溯应用于先前发布的C++标准。

缺陷报告 适用范围 发布时行为 正确行为
LWG 2485 C++11 不存在 const array&& 的重载版本 已添加重载版本

参见

结构化绑定 (C++17) 将指定名称绑定到初始化器的子对象或元组元素
访问指定元素
(公开成员函数)
带边界检查的访问指定元素
(公开成员函数)
元组访问指定元素
(函数模板)
访问 pair 的元素
(函数模板)
通过索引或类型(若类型唯一)读取 variant 的值,错误时抛出异常
(函数模板)
std::ranges::subrange 获取迭代器或哨兵
(函数模板)
std::complex 获取实部或虚部的引用
(函数模板)