命名空间
变体
操作

std::get(std::array)

来自 cppreference.cn
< cpp‎ | 容器‎ | array
 
 
 
 
定义于头文件 <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)

使用 类元组 (tuple-like) 接口从数组中提取第 I 个元素。

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

目录

[编辑] 参数

a - 要提取内容的数组

[编辑] 返回值

a 的第 I 个元素的引用。

[编辑] 复杂度

常数时间。

[编辑] 示例

#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;
 
    // set values:
    get<0>(a) = 1, get<1>(a) = 2, get<2>(a) = 3;
 
    // get values:
    std::cout << '(' << get<0>(a) << ',' << get<1>(a) << ',' << get<2>(a) << ")\n";
}

输出

(1,2,3)

[编辑] 缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

缺陷报告 应用于 发布时的行为 正确的行为
LWG 2485 C++11 没有 const array&& 的重载 已添加重载

[编辑] 参阅

结构化绑定 (C++17) 将指定名称绑定到初始化器的子对象或元组元素[编辑]
访问指定的元素
(公共成员函数) [编辑]
访问指定的元素,带边界检查
(公共成员函数) [编辑]
tuple 访问指定的元素
(函数模板) [编辑]
访问 pair 的元素
(函数模板) [编辑]
根据索引或类型(如果类型唯一)读取变体的值,出错时抛出异常
(函数模板) [编辑]
std::ranges::subrange 获取迭代器或哨兵
(函数模板) [编辑]
std::complex 获取实部或虚部的引用
(函数模板) [编辑]