y3c-stl 0.3.3
Friendly C++ STL wrapper with automatic stacktrace
Loading...
Searching...
No Matches
array< T, N > Class Template Reference

固定長配列 (std::array) More...

#include <y3c/array.h>

Public Types

using reference = wrap_ref< T >
 
using const_reference = const_wrap_ref< T >
 
using iterator = internal::contiguous_iterator< T >
 
using const_iterator = internal::contiguous_iterator< const T >
 
using size_type = std::size_t
 
using difference_type = std::ptrdiff_t
 
using pointer = ptr< T >
 
using const_pointer = const_ptr< T >
 
using value_type = T
 

Public Member Functions

 array ()
 デフォルトコンストラクタ: 各要素をデフォルト値で初期化
 
 array (const array &other)
 コピーコンストラクタ
 
arrayoperator= (const array &other)
 コピー代入
 
 array (array &&other)
 ムーブコンストラクタ
 
arrayoperator= (array &&other)
 ムーブ代入
 
template<typename... Args, typename std::enable_if<(sizeof...(Args)==N), std::nullptr_t >::type = nullptr>
 array (Args &&...args)
 要素で初期化
 
 array (const std::array< T, N > &elems)
 std::arrayからのコピー
 
 array (std::array< T, N > &&elems)
 std::arrayからのムーブ
 
arrayoperator= (const std::array< T, N > &elems)
 std::arrayからのコピー
 
arrayoperator= (std::array< T, N > &&elems)
 std::arrayからのムーブ
 
reference at (size_type n, internal::skip_trace_tag={})
 要素アクセス
 
const_reference at (size_type n, internal::skip_trace_tag={}) const
 要素アクセス(const)
 
template<typename = internal::skip_trace_tag>
reference operator[] (size_type n)
 要素アクセス
 
template<typename = internal::skip_trace_tag>
const_reference operator[] (size_type n) const
 要素アクセス(const)
 
reference front (internal::skip_trace_tag={})
 先頭の要素へのアクセス
 
const_reference front (internal::skip_trace_tag={}) const
 先頭の要素へのアクセス(const)
 
reference back (internal::skip_trace_tag={})
 末尾の要素へのアクセス
 
const_reference back (internal::skip_trace_tag={}) const
 末尾の要素へのアクセス
 
pointer data ()
 先頭要素へのポインタを取得
 
const_pointer data () const
 先頭要素へのconstポインタを取得
 
iterator begin ()
 先頭要素を指すイテレータを取得
 
const_iterator begin () const
 先頭要素を指すconstイテレータを取得
 
const_iterator cbegin () const
 先頭要素を指すconstイテレータを取得
 
iterator end ()
 末尾要素を指すイテレータを取得
 
const_iterator end () const
 末尾要素を指すconstイテレータを取得
 
const_iterator cend () const
 末尾要素を指すconstイテレータを取得
 
bool empty () const noexcept
 sizeが0かどうかを返す
 
size_type size () const noexcept
 配列のサイズを取得
 
size_type max_size () const noexcept
 配列の最大サイズを取得
 
void fill (const T &value)
 コンテナを要素で埋める
 
void swap (array &other)
 別のarrayと要素を入れ替える
 
 operator std::array< T, N > & () noexcept
 std::array へのキャスト
 
 operator const std::array< T, N > & () const noexcept
 const std::array へのキャスト
 
 operator wrap< array & > () noexcept
 
 operator wrap< const array & > () const noexcept
 
wrap< array * > operator& ()
 
wrap< const array * > operator& () const
 

Detailed Description

template<typename T, std::size_t N>
class y3c::array< T, N >

固定長配列 (std::array)

  • キャストするか unwrap() することで std::array<T, N> (の参照)に戻せる。
  • std::arrayと違って集成体初期化はできない (できるようにする必要はあるのか?)
See also
array - cpprefjp
Examples
array-at.cc, array-iter.cc, array-operator.cc, array-ptr-local.cc, array-ptr.cc, and catch.cc.

Member Typedef Documentation

◆ const_iterator

template<typename T , std::size_t N>
using const_iterator = internal::contiguous_iterator<const T>

◆ const_pointer

template<typename T , std::size_t N>
using const_pointer = const_ptr<T>

◆ const_reference

template<typename T , std::size_t N>
using const_reference = const_wrap_ref<T>

◆ difference_type

template<typename T , std::size_t N>
using difference_type = std::ptrdiff_t

◆ iterator

template<typename T , std::size_t N>
using iterator = internal::contiguous_iterator<T>

◆ pointer

template<typename T , std::size_t N>
using pointer = ptr<T>

◆ reference

template<typename T , std::size_t N>
using reference = wrap_ref<T>

◆ size_type

template<typename T , std::size_t N>
using size_type = std::size_t

◆ value_type

template<typename T , std::size_t N>
using value_type = T

Constructor & Destructor Documentation

◆ array() [1/6]

template<typename T , std::size_t N>
array ( )
inline

デフォルトコンストラクタ: 各要素をデフォルト値で初期化

◆ array() [2/6]

template<typename T , std::size_t N>
array ( const array< T, N > &  other)
inline

コピーコンストラクタ

◆ array() [3/6]

template<typename T , std::size_t N>
array ( array< T, N > &&  other)
inline

ムーブコンストラクタ

◆ array() [4/6]

template<typename T , std::size_t N>
template<typename... Args, typename std::enable_if<(sizeof...(Args)==N), std::nullptr_t >::type = nullptr>
array ( Args &&...  args)
inline

要素で初期化

y3c::array<int, 3>{1, 2, 3} のような初期化をできるようにする

◆ array() [5/6]

template<typename T , std::size_t N>
array ( const std::array< T, N > &  elems)
inline

std::arrayからのコピー

◆ array() [6/6]

template<typename T , std::size_t N>
array ( std::array< T, N > &&  elems)
inline

std::arrayからのムーブ

Member Function Documentation

◆ at() [1/2]

template<typename T , std::size_t N>
reference at ( size_type  n,
internal::skip_trace_tag  = {} 
)
inline

要素アクセス

  • インデックスが範囲外の場合、 out_of_range を投げる。
Examples
array-at.cc, and catch.cc.

◆ at() [2/2]

template<typename T , std::size_t N>
const_reference at ( size_type  n,
internal::skip_trace_tag  = {} 
) const
inline

要素アクセス(const)

  • インデックスが範囲外の場合、 out_of_range を投げる。

◆ back() [1/2]

template<typename T , std::size_t N>
reference back ( internal::skip_trace_tag  = {})
inline

末尾の要素へのアクセス

  • サイズが0の場合terminateする。

◆ back() [2/2]

template<typename T , std::size_t N>
const_reference back ( internal::skip_trace_tag  = {}) const
inline

末尾の要素へのアクセス

  • サイズが0の場合terminateする。

◆ begin() [1/2]

template<typename T , std::size_t N>
iterator begin ( )
inline

先頭要素を指すイテレータを取得

  • サイズが0の場合無効なイテレータを返す。
Examples
array-iter.cc.

◆ begin() [2/2]

template<typename T , std::size_t N>
const_iterator begin ( ) const
inline

先頭要素を指すconstイテレータを取得

  • サイズが0の場合無効なイテレータを返す。

◆ cbegin()

template<typename T , std::size_t N>
const_iterator cbegin ( ) const
inline

先頭要素を指すconstイテレータを取得

  • サイズが0の場合無効なイテレータを返す。

◆ cend()

template<typename T , std::size_t N>
const_iterator cend ( ) const
inline

末尾要素を指すconstイテレータを取得

  • サイズが0の場合無効なイテレータを返す。

◆ data() [1/2]

template<typename T , std::size_t N>
pointer data ( )
inline

先頭要素へのポインタを取得

  • サイズが0の場合無効なポインタを返す。

◆ data() [2/2]

template<typename T , std::size_t N>
const_pointer data ( ) const
inline

先頭要素へのconstポインタを取得

  • サイズが0の場合無効なポインタを返す。

◆ empty()

template<typename T , std::size_t N>
bool empty ( ) const
inlinenoexcept

sizeが0かどうかを返す

Returns
N == 0

◆ end() [1/2]

template<typename T , std::size_t N>
iterator end ( )
inline

末尾要素を指すイテレータを取得

  • サイズが0の場合無効なイテレータを返す。

◆ end() [2/2]

template<typename T , std::size_t N>
const_iterator end ( ) const
inline

末尾要素を指すconstイテレータを取得

  • サイズが0の場合無効なイテレータを返す。

◆ fill()

template<typename T , std::size_t N>
void fill ( const T &  value)
inline

コンテナを要素で埋める

◆ front() [1/2]

template<typename T , std::size_t N>
reference front ( internal::skip_trace_tag  = {})
inline

先頭の要素へのアクセス

  • サイズが0の場合terminateする。

◆ front() [2/2]

template<typename T , std::size_t N>
const_reference front ( internal::skip_trace_tag  = {}) const
inline

先頭の要素へのアクセス(const)

  • サイズが0の場合terminateする。

◆ max_size()

template<typename T , std::size_t N>
size_type max_size ( ) const
inlinenoexcept

配列の最大サイズを取得

Returns
N

◆ operator const std::array< T, N > &()

template<typename T , std::size_t N>
operator const std::array< T, N > & ( ) const
inlinenoexcept

const std::array へのキャスト

◆ operator std::array< T, N > &()

template<typename T , std::size_t N>
operator std::array< T, N > & ( )
inlinenoexcept

std::array へのキャスト

◆ operator wrap< array & >()

template<typename T , std::size_t N>
operator wrap< array & > ( )
inlinenoexcept

◆ operator wrap< const array & >()

template<typename T , std::size_t N>
operator wrap< const array & > ( ) const
inlinenoexcept

◆ operator&() [1/2]

template<typename T , std::size_t N>
wrap< array * > operator& ( )
inline

◆ operator&() [2/2]

template<typename T , std::size_t N>
wrap< const array * > operator& ( ) const
inline

◆ operator=() [1/4]

template<typename T , std::size_t N>
array & operator= ( array< T, N > &&  other)
inline

ムーブ代入

◆ operator=() [2/4]

template<typename T , std::size_t N>
array & operator= ( const array< T, N > &  other)
inline

コピー代入

◆ operator=() [3/4]

template<typename T , std::size_t N>
array & operator= ( const std::array< T, N > &  elems)
inline

std::arrayからのコピー

◆ operator=() [4/4]

template<typename T , std::size_t N>
array & operator= ( std::array< T, N > &&  elems)
inline

std::arrayからのムーブ

◆ operator[]() [1/2]

template<typename T , std::size_t N>
template<typename = internal::skip_trace_tag>
reference operator[] ( size_type  n)
inline

要素アクセス

  • インデックスが範囲外の場合terminateする。
Examples
array-operator.cc.

◆ operator[]() [2/2]

template<typename T , std::size_t N>
template<typename = internal::skip_trace_tag>
const_reference operator[] ( size_type  n) const
inline

要素アクセス(const)

  • インデックスが範囲外の場合terminateする。

◆ size()

template<typename T , std::size_t N>
size_type size ( ) const
inlinenoexcept

配列のサイズを取得

Returns
N

◆ swap()

template<typename T , std::size_t N>
void swap ( array< T, N > &  other)
inline

別のarrayと要素を入れ替える


The documentation for this class was generated from the following file: