function template
<array>

std::get (array)

template <size_t I, class T, size_t N> T& get (array<T,N>& arr) noexcept;template <size_t I, class T, size_t N> T&& get (array<T,N>&& arr) noexcept;template <size_t I, class T, size_t N> const T& get (const array<T,N>& arr) noexcept;
获取元素(tuple 接口)
返回 array arr 中第 I 个元素的引用。

提供了 tuple 同名函数 get 的此重载,以便 array 对象可以被视为 tuple。为此,头文件 <array> 还重载了 tuple_sizetuple_element 类型,并定义了相应的成员。

模板参数

I
数组中元素的 the position,0 表示第一个元素的位置。
size_t 是一个无符号整数类型。
T
数组中元素的类型(通常从 arr 隐式获得)。
N
数组的大小(以元素数量计)(通常从 arr 隐式获得)。

Function parameters (函数参数)

arr
一个 array 容器。

返回值

对数组中指定位置的元素的引用。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// arrays as tuples
#include <iostream>
#include <array>
#include <tuple>

int main ()
{
  std::array<int,3> myarray = {10, 20, 30};
  std::tuple<int,int,int> mytuple (10, 20, 30);

  std::tuple_element<0,decltype(myarray)>::type myelement;  // int myelement

  myelement = std::get<2>(myarray);
  std::get<2>(myarray) = std::get<0>(myarray);
  std::get<0>(myarray) = myelement;

  std::cout << "first element in myarray: " << std::get<0>(myarray) << "\n";
  std::cout << "first element in mytuple: " << std::get<0>(mytuple) << "\n";

  return 0;
}

输出
first element in myarray: 30
first element in mytuple: 10


复杂度

常量。

迭代器有效性

没有变化。

数据竞争

arr 的第 I 个元素可以被调用者访问或修改。同时访问或修改 arr 的其他元素是安全的。

异常安全

无异常保证:此函数从不抛出异常。

另见