GeezerVison is showing cpprefjp.github.io — std::get - cpprefjp C++日本語リファレンス
最終更新日時:
2026年09月19日 21時31分51秒 (JST)
rotarymars
が更新
履歴
編集
function template
<array>
std:: get (C++11)
namespace std {
template < std::size_t I , class T , std::size_t N >
T & get ( array < T , N >& x ) noexcept ; // (1) C++11
template < std::size_t I , class T , std::size_t N >
constexpr T & get ( array < T , N >& x ) noexcept ; // (1) C++14
template < std::size_t I , class T , std::size_t N >
T && get ( array < T , N >&& x ) noexcept ; // (2) C++11
template < std::size_t I , class T , std::size_t N >
constexpr T && get ( array < T , N >&& x ) noexcept ; // (2) C++14
template < std::size_t I , class T , std::size_t N >
const T & get ( const array < T , N >& x ) noexcept ; // (3) C++11
template < std::size_t I , class T , std::size_t N >
constexpr const T & get ( const array < T , N >& x ) noexcept ; // (3) C++14
template < std::size_t I , class T , std::size_t N >
constexpr const T && get ( const array < T , N >&& x ) noexcept ; // (4) C++17
}
概要
タプルと見なせる型から指定した位置の要素を取得する。
<array>ヘッダでは、arrayクラスに関するオーバーロードを定義する。
適格要件
戻り値
x[I]
例外
投げない
計算量
定数時間
例
#include <cassert>
#include <array>
#include <utility>
const std::array < int , 3 > make ()
{
return { 3 , 1 , 4 };
}
int main ()
{
// 非const左辺値参照版
{
std::array < int , 3 > ar = { 3 , 1 , 4 };
int & front = std::get < 0 > ( ar ); // 先頭要素を取得する
int & back = std::get < 2 > ( ar ); // 最後尾要素を取得する
assert ( front == 3 );
assert ( back == 4 );
}
// 右辺値参照版
{
std::array < int , 3 > ar = { 3 , 1 , 4 };
int front = std::get < 0 > ( std::move ( ar ));
assert ( front == 3 );
}
// const左辺値参照版
{
const std::array < int , 3 > ar = { 3 , 1 , 4 };
const int & front = std::get < 0 > ( ar );
const int & back = std::get < 2 > ( ar );
assert ( front == 3 );
assert ( back == 4 );
}
// const右辺値参照版
{
int front = std::get < 0 > ( make ());
assert ( front == 3 );
}
}
出力
バージョン
言語
処理系
備考
GCC 4.7のstd::get()は、Iの境界チェックがない。
関連項目
参照