Spec-Zone.ru › C++

std::get(std::array)

Определено в заголовке <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)

Извлекает I-й элемент из массива, используя интерфейс типа кортежа.

I должно быть целым значением в диапазоне [​0​, N). Это проверяется на этапе компиляции, в отличие от at() или operator[].

Параметры

a - массив, чьё содержимое нужно извлечь

Возвращаемое значение

Ссылка на I-й элемент массива a.

Сложность

Постоянная.

Пример

#include <array>
#include <iostream>
 
int main()
{
    std::array<int, 3> arr;
 
    // set values:
    std::get<0>(arr) = 1;
    std::get<1>(arr) = 2;
    std::get<2>(arr) = 3;
 
    // get values:
    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) связывает указанные имена с подобъектами или элементами кортежа инициализатора
operator[]
доступ к указанному элементу
(публичный член-функция)
at
доступ к указанному элементу с проверкой границ
(публичный член-функция)
get(std::tuple)
(C++11)
доступ к указанному элементу кортежа
(шаблон функции)
get(std::pair)
(C++11)
доступ к элементу pair
(шаблон функции)
get(std::variant)
(C++17)
считывает значение варианта, заданного по индексу или типу (если тип уникален), выбрасывает исключение при ошибке
(шаблон функции)
get(std::ranges::subrange)
(C++20)
получает итератор или конечную точку поддиапазона std::ranges::subrange
(шаблон функции)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/container/array/get

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API