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) | связывает указанные имена с подобъектами или элементами кортежа инициализатора |
| доступ к указанному элементу (открытая функция-член) |
|
| доступ к указанному элементу с проверкой границ (открытая функция-член) |
|
|
(C++11) | доступ к указанному элементу кортежа (шаблон функции) |
|
(C++11) | доступ к элементу pair (шаблон функции) |
|
(C++17) | читает значение variant по индексу или типу (если тип уникален); при ошибке выбрасывает исключение (шаблон функции) |
|
(C++20) | получает итератор или sentinel из std::ranges::subrange (шаблон функции) |
|
(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