Spec-Zone.ru › C++

std::get(std::array)

Определено в заголовочном файле <array>
template< std::size_t I, class T, std::size_t N >
T& get( std::array<T,N>& a ) noexcept;
(1) (начиная с C++11)
(constexpr начиная с C++14)
template< std::size_t I, class T, std::size_t N >
T&& get( std::array<T,N>&& a ) noexcept;
(2) (начиная с C++11)
(constexpr начиная с C++14)
template< std::size_t I, class T, std::size_t N >
const T& get( const std::array<T,N>& a ) noexcept;
(3) (начиная с C++11)
(constexpr начиная с C++14)
template< std::size_t I, class T, std::size_t N >
const T&& get( const std::array<T,N>&& a ) noexcept;
(4) (начиная с C++11)
(constexpr начиная с C++14)

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

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

Параметры

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

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

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

Сложность

Константная.

Пример

#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++.

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)
читает значение variant по индексу или типу (если тип уникален); при ошибке выбрасывает исключение
(шаблон функции)
get(std::ranges::subrange)
(C++20)
получает итератор или sentinel из std::ranges::subrange
(шаблон функции)
get(std::complex)
(C++26)
получает ссылку на действительную или мнимую часть std::complex
(шаблон функции)

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

Spec-Zone.ru

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