std::get(std::array)

From cppreference.com
< cpp‎ | container‎ | array
 
 
 
 
Defined in header <array>
template< std::size_t I, class T, std::size_t N >
T& get( std::array<T,N>& a ) noexcept;
(1) (since C++11)
(constexpr since C++14)
template< std::size_t I, class T, std::size_t N >
T&& get( std::array<T,N>&& a ) noexcept;
(2) (since C++11)
(constexpr since C++14)
template< std::size_t I, class T, std::size_t N >
const T& get( const std::array<T,N>& a ) noexcept;
(3) (since C++11)
(constexpr since C++14)
template< std::size_t I, class T, std::size_t N >
const T&& get( const std::array<T,N>&& a ) noexcept;
(4) (since C++11)
(constexpr since C++14)

Extracts the Ith element from the array using tuple-like interface.

I must be an integer value in range [0N). This is enforced at compile time as opposed to at() or operator[].

Parameters

a - array whose contents to extract

Return value

A reference to the Ith element of a.

Complexity

Constant.

Example

#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";
}

Output:

(1,2,3)

Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DR Applied to Behavior as published Correct behavior
LWG 2485 C++11 there are no overloads for const array&& the overloads are added

See also

Structured binding (C++17) binds the specified names to sub-objects or tuple elements of the initializer
access specified element
(public member function)
access specified element with bounds checking
(public member function)
tuple accesses specified element
(function template)
accesses an element of a pair
(function template)
reads the value of the variant given the index or the type (if the type is unique), throws on error
(function template)
obtains iterator or sentinel from a std::ranges::subrange
(function template)
obtains a reference to real or imaginary part from a std::complex
(function template)