名稱空間
變體
操作

std::get(std::array)

來自 cppreference.com
< cpp‎ | 容器‎ | array
 
 
 
 
定義於標頭檔案 <array>
template< std::size_t I, class T, std::size_t N >
T& get( std::array<T,N>& a ) noexcept;
(1) (C++11 起)
(C++14 起為 constexpr)
template< std::size_t I, class T, std::size_t N >
T&& get( std::array<T,N>&& a ) noexcept;
(2) (C++11 起)
(C++14 起為 constexpr)
template< std::size_t I, class T, std::size_t N >
const T& get( const std::array<T,N>& a ) noexcept;
(3) (C++11 起)
(C++14 起為 constexpr)
template< std::size_t I, class T, std::size_t N >
const T&& get( const std::array<T,N>&& a ) noexcept;
(4) (C++11 起)
(C++14 起為 constexpr)

使用 類元組 (tuple-like) 介面從陣列中提取第 I 個元素。

I 必須是範圍 [0N) 內的整數值。與 at()operator[] 不同,此檢查在編譯時強制執行。

目錄

[編輯] 引數

a - 要提取內容的陣列

[編輯] 返回值

a 的第 I 個元素的引用。

[編輯] 複雜度

常數時間。

[編輯] 示例

#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++ 標準。

缺陷報告 應用於 釋出時的行為 正確的行為
LWG 2485 C++11 沒有 const array&& 的過載 已新增過載

[編輯] 參閱

結構化繫結 (C++17) 將指定名稱繫結到初始化器的子物件或元組元素[編輯]
訪問指定的元素
(公共成員函式) [編輯]
訪問指定的元素,帶邊界檢查
(公共成員函式) [編輯]
tuple 訪問指定的元素
(函式模板) [編輯]
訪問 pair 的元素
(函式模板) [編輯]
根據索引或型別(如果型別唯一)讀取變體的值,出錯時丟擲異常
(函式模板) [編輯]
std::ranges::subrange 獲取迭代器或哨兵
(函式模板) [編輯]
std::complex 獲取實部或虛部的引用
(函式模板) [編輯]