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

可変長配列 (std::vector) More...

#include <y3c/vector.h>

Public Types

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

Public Member Functions

 vector ()
 サイズ0のvectorを作成する
 
 vector (const vector &other)
 新しい領域にコピー構築
 
 vector (vector &&other)
 ムーブ構築
 
vectoroperator= (const vector &other)
 すべての要素をコピー
 
vectoroperator= (vector &&other)
 すべての要素をムーブ
 
 ~vector ()=default
 
 vector (const std::vector< T > &other)
 std::vectorからコピー構築
 
 vector (const std::vector< T > &&other)
 std::vectorからムーブ構築
 
vectoroperator= (const std::vector< T > &other)
 std::vectorからのコピー代入
 
vectoroperator= (std::vector< T > &&other)
 std::vectorからのムーブ代入
 
 vector (size_type count)
 サイズ指定して初期化
 
 vector (size_type count, const T &value)
 サイズと値を指定して初期化
 
template<typename InputIt >
 vector (InputIt first, InputIt last)
 イテレータで初期化
 
 vector (std::initializer_list< T > init)
 std::initializer_listで初期化
 
vectoroperator= (std::initializer_list< T > ilist)
 initialization_listの代入
 
void assign (size_type count, const T &value)
 サイズと値を指定して要素を置き換える
 
template<typename InputIt >
void assign (InputIt first, InputIt last)
 イテレータからのコピーで要素を置き換える
 
void assign (std::initializer_list< T > ilist)
 initializer_listで要素を置き換える
 
void clear ()
 要素のクリア
 
void reserve (size_type new_cap)
 領域の確保
 
void shrink_to_fit ()
 容量の縮小
 
iterator erase (const_iterator pos, internal::skip_trace_tag={})
 要素の削除
 
iterator erase (const_iterator begin, const_iterator end, internal::skip_trace_tag={})
 要素の削除
 
void push_back (const T &value)
 要素の追加
 
void push_back (T &&value)
 要素の追加
 
template<typename... Args>
reference emplace_back (Args &&...args)
 要素の追加
 
iterator insert (const_iterator pos, const T &value, internal::skip_trace_tag={})
 要素の挿入
 
iterator insert (const_iterator pos, T &&value, internal::skip_trace_tag={})
 要素の挿入
 
iterator insert (const_iterator pos, size_type count, const T &value, internal::skip_trace_tag={})
 要素の挿入
 
template<typename InputIt , typename std::enable_if< std::is_convertible< typename std::iterator_traits< InputIt >::reference, value_type >::value, std::nullptr_t >::type = nullptr>
iterator insert (const_iterator pos, InputIt first, InputIt last, internal::skip_trace_tag={})
 要素の挿入
 
iterator insert (const_iterator pos, std::initializer_list< T > ilist, internal::skip_trace_tag={})
 要素の挿入
 
template<typename... Args, typename = internal::skip_trace_tag>
iterator emplace (const_iterator pos, Args &&...args)
 要素の挿入
 
void resize (size_type count)
 サイズを変更
 
void resize (size_type count, const T &value)
 サイズを変更
 
void pop_back (internal::skip_trace_tag={})
 末尾の要素を削除
 
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
 末尾の要素へのアクセス(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
 sizeが0かどうかを返す
 
size_type size () const
 配列のサイズを取得
 
size_type max_size () const
 配列の最大サイズを取得
 
size_type capacity () const
 現在のメモリ確保済みのサイズを取得
 
void swap (vector &other)
 別のvectorと要素を入れ替える
 
 operator const std::vector & () const noexcept
 const std::vector へのキャスト
 
 operator wrap< const vector & > () const noexcept
 
wrap< const vector * > operator& () const
 

Detailed Description

template<typename T>
class y3c::vector< T >

可変長配列 (std::vector)

  • キャストするか unwrap() することで std::vector<T> (のconst参照)に戻せる。
    • std::vector<T> のconstでない参照で取得して変更を加えることはできないようにしている。
See also
vector - cpprefjp
Examples
vector-at.cc, vector-insert.cc, vector-iter-erase.cc, vector-iter-reallocate.cc, vector-iter.cc, vector-operator.cc, vector-ptr-local.cc, vector-ptr-reallocate.cc, and vector-ptr.cc.

Member Typedef Documentation

◆ const_iterator

template<typename T >
using const_iterator = internal::contiguous_iterator<const T>

◆ const_pointer

template<typename T >
using const_pointer = const_ptr<T>

◆ const_reference

template<typename T >
using const_reference = const_wrap_ref<T>

◆ difference_type

template<typename T >
using difference_type = std::ptrdiff_t

◆ iterator

template<typename T >
using iterator = internal::contiguous_iterator<T>

◆ pointer

template<typename T >
using pointer = ptr<T>

◆ reference

template<typename T >
using reference = wrap_ref<T>

◆ size_type

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

◆ value_type

template<typename T >
using value_type = T

Constructor & Destructor Documentation

◆ vector() [1/9]

template<typename T >
vector ( )
inline

サイズ0のvectorを作成する

◆ vector() [2/9]

template<typename T >
vector ( const vector< T > &  other)
inline

新しい領域にコピー構築

◆ vector() [3/9]

template<typename T >
vector ( vector< T > &&  other)
inline

ムーブ構築

  • ムーブ元の領域を自分のものとする。
  • ムーブ元を指していたイテレータは有効のまま

◆ ~vector()

template<typename T >
~vector ( )
default

◆ vector() [4/9]

template<typename T >
vector ( const std::vector< T > &  other)
inline

std::vectorからコピー構築

◆ vector() [5/9]

template<typename T >
vector ( const std::vector< T > &&  other)
inline

std::vectorからムーブ構築

◆ vector() [6/9]

template<typename T >
vector ( size_type  count)
inlineexplicit

サイズ指定して初期化

◆ vector() [7/9]

template<typename T >
vector ( size_type  count,
const T &  value 
)
inline

サイズと値を指定して初期化

◆ vector() [8/9]

template<typename T >
template<typename InputIt >
vector ( InputIt  first,
InputIt  last 
)
inline

イテレータで初期化

◆ vector() [9/9]

template<typename T >
vector ( std::initializer_list< T >  init)
inline

std::initializer_listで初期化

Member Function Documentation

◆ assign() [1/3]

template<typename T >
template<typename InputIt >
void assign ( InputIt  first,
InputIt  last 
)
inline

イテレータからのコピーで要素を置き換える

  • 既存のイテレータは無効になる

◆ assign() [2/3]

template<typename T >
void assign ( size_type  count,
const T &  value 
)
inline

サイズと値を指定して要素を置き換える

  • 既存のイテレータは無効になる

◆ assign() [3/3]

template<typename T >
void assign ( std::initializer_list< T >  ilist)
inline

initializer_listで要素を置き換える

  • 既存のイテレータは無効になる

◆ at() [1/2]

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

要素アクセス

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

◆ at() [2/2]

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

要素アクセス(const)

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

◆ back() [1/2]

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

末尾の要素へのアクセス

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

◆ back() [2/2]

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

末尾の要素へのアクセス(const)

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

◆ begin() [1/2]

template<typename T >
iterator begin ( )
inline

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

  • サイズが0の場合無効なイテレータを返す。
Examples
vector-insert.cc, vector-iter-erase.cc, vector-iter-reallocate.cc, and vector-iter.cc.

◆ begin() [2/2]

template<typename T >
const_iterator begin ( ) const
inline

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

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

◆ capacity()

template<typename T >
size_type capacity ( ) const
inline

現在のメモリ確保済みのサイズを取得

◆ cbegin()

template<typename T >
const_iterator cbegin ( ) const
inline

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

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

◆ cend()

template<typename T >
const_iterator cend ( ) const
inline

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

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

◆ clear()

template<typename T >
void clear ( )
inline

要素のクリア

  • 既存のイテレータは無効になる

◆ data() [1/2]

template<typename T >
pointer data ( )
inline

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

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

◆ data() [2/2]

template<typename T >
const_pointer data ( ) const
inline

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

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

◆ emplace()

template<typename T >
template<typename... Args, typename = internal::skip_trace_tag>
iterator emplace ( const_iterator  pos,
Args &&...  args 
)
inline

要素の挿入

Parameters
pos挿入する位置を指すイテレータ
args挿入する要素のコンストラクタ引数
Returns
挿入された要素を指すイテレータ
  • 指定した位置が無効であったりこのvectorのものでない場合terminateする。
  • 再割り当てが発生した場合、既存のイテレータは無効になる。 そうでない場合、挿入位置以降が無効になる

◆ emplace_back()

template<typename T >
template<typename... Args>
reference emplace_back ( Args &&...  args)
inline

要素の追加

Parameters
args追加する要素のコンストラクタ引数
  • 再割り当てが発生した場合、既存のイテレータは無効になる。 そうでない場合、end()を指していたもののみ無効になる

◆ empty()

template<typename T >
bool empty ( ) const
inline

sizeが0かどうかを返す

◆ end() [1/2]

template<typename T >
iterator end ( )
inline

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

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

◆ end() [2/2]

template<typename T >
const_iterator end ( ) const
inline

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

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

◆ erase() [1/2]

template<typename T >
iterator erase ( const_iterator  begin,
const_iterator  end,
internal::skip_trace_tag  = {} 
)
inline

要素の削除

Parameters
begin,end削除する範囲を指すイテレータ
Returns
削除した次の要素を指すイテレータ
  • 指定した範囲が無効であったりこのvectorのものでない場合terminateする。
  • 削除した位置以降を指していたイテレータは無効になる

◆ erase() [2/2]

template<typename T >
iterator erase ( const_iterator  pos,
internal::skip_trace_tag  = {} 
)
inline

要素の削除

Parameters
pos削除する位置を指すイテレータ
Returns
削除した次の要素を指すイテレータ
  • 指定した位置が無効であったりこのvectorのものでない場合terminateする。
  • 削除した位置以降を指していたイテレータは無効になる
Examples
vector-iter-erase.cc.

◆ front() [1/2]

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

先頭の要素へのアクセス

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

◆ front() [2/2]

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

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

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

◆ insert() [1/5]

template<typename T >
iterator insert ( const_iterator  pos,
const T &  value,
internal::skip_trace_tag  = {} 
)
inline

要素の挿入

Parameters
pos挿入する位置を指すイテレータ
value挿入する要素(コピー)
Returns
挿入された要素を指すイテレータ
  • 指定した位置が無効であったりこのvectorのものでない場合terminateする。
  • 再割り当てが発生した場合、既存のイテレータは無効になる。 そうでない場合、挿入位置以降が無効になる
Examples
vector-insert.cc.

◆ insert() [2/5]

template<typename T >
template<typename InputIt , typename std::enable_if< std::is_convertible< typename std::iterator_traits< InputIt >::reference, value_type >::value, std::nullptr_t >::type = nullptr>
iterator insert ( const_iterator  pos,
InputIt  first,
InputIt  last,
internal::skip_trace_tag  = {} 
)
inline

要素の挿入

Parameters
pos挿入する位置を指すイテレータ
first,end挿入する要素(別の配列など)を指すイテレータ
Returns
挿入された要素を指すイテレータ
  • 指定した位置が無効であったりこのvectorのものでない場合terminateする。
  • 再割り当てが発生した場合、既存のイテレータは無効になる。 そうでない場合、挿入位置以降が無効になる

◆ insert() [3/5]

template<typename T >
iterator insert ( const_iterator  pos,
size_type  count,
const T &  value,
internal::skip_trace_tag  = {} 
)
inline

要素の挿入

Parameters
pos挿入する位置を指すイテレータ
count挿入する個数
value挿入する要素(コピー)
Returns
挿入された要素を指すイテレータ
  • 指定した位置が無効であったりこのvectorのものでない場合terminateする。
  • 再割り当てが発生した場合、既存のイテレータは無効になる。 そうでない場合、挿入位置以降が無効になる

◆ insert() [4/5]

template<typename T >
iterator insert ( const_iterator  pos,
std::initializer_list< T >  ilist,
internal::skip_trace_tag  = {} 
)
inline

要素の挿入

Parameters
pos挿入する位置を指すイテレータ
ilist挿入する要素
Returns
挿入された要素を指すイテレータ
  • 指定した位置が無効であったりこのvectorのものでない場合terminateする。
  • 再割り当てが発生した場合、既存のイテレータは無効になる。 そうでない場合、挿入位置以降が無効になる

◆ insert() [5/5]

template<typename T >
iterator insert ( const_iterator  pos,
T &&  value,
internal::skip_trace_tag  = {} 
)
inline

要素の挿入

Parameters
pos挿入する位置を指すイテレータ
value挿入する要素(ムーブ)
Returns
挿入された要素を指すイテレータ
  • 指定した位置が無効であったりこのvectorのものでない場合terminateする。
  • 再割り当てが発生した場合、既存のイテレータは無効になる。 そうでない場合、挿入位置以降が無効になる

◆ max_size()

template<typename T >
size_type max_size ( ) const
inline

配列の最大サイズを取得

◆ operator const std::vector &()

template<typename T >
operator const std::vector & ( ) const
inlinenoexcept

const std::vector へのキャスト

◆ operator wrap< const vector & >()

template<typename T >
operator wrap< const vector & > ( ) const
inlinenoexcept

◆ operator&()

template<typename T >
wrap< const vector * > operator& ( ) const
inline

◆ operator=() [1/5]

template<typename T >
vector & operator= ( const std::vector< T > &  other)
inline

std::vectorからのコピー代入

  • 既存のイテレータは無効になる

◆ operator=() [2/5]

template<typename T >
vector & operator= ( const vector< T > &  other)
inline

すべての要素をコピー

  • このコンテナの既存のイテレータは無効になる

◆ operator=() [3/5]

template<typename T >
vector & operator= ( std::initializer_list< T >  ilist)
inline

initialization_listの代入

  • 既存のイテレータは無効になる

◆ operator=() [4/5]

template<typename T >
vector & operator= ( std::vector< T > &&  other)
inline

std::vectorからのムーブ代入

  • 既存のイテレータは無効になる

◆ operator=() [5/5]

template<typename T >
vector & operator= ( vector< T > &&  other)
inline

すべての要素をムーブ

  • このコンテナの既存のイテレータは無効になる
  • ムーブ元を指していたイテレータは有効のまま

◆ operator[]() [1/2]

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

要素アクセス

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

◆ operator[]() [2/2]

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

要素アクセス(const)

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

◆ pop_back()

template<typename T >
void pop_back ( internal::skip_trace_tag  = {})
inline

末尾の要素を削除

  • 最後の要素とend()を指すイテレータは無効になる

◆ push_back() [1/2]

template<typename T >
void push_back ( const T &  value)
inline

要素の追加

Parameters
value追加する要素(コピー)
  • 再割り当てが発生した場合、既存のイテレータは無効になる。 そうでない場合、end()を指していたもののみ無効になる

◆ push_back() [2/2]

template<typename T >
void push_back ( T &&  value)
inline

要素の追加

Parameters
value追加する要素(ムーブ)
  • 再割り当てが発生した場合、既存のイテレータは無効になる。 そうでない場合、end()を指していたもののみ無効になる

◆ reserve()

template<typename T >
void reserve ( size_type  new_cap)
inline

領域の確保

  • 再割り当てが発生した場合、既存のイテレータは無効になる

◆ resize() [1/2]

template<typename T >
void resize ( size_type  count)
inline

サイズを変更

Parameters
count配列サイズ
  • 再割り当てが発生した場合、既存のイテレータは無効になる。 そうでない場合、削除された要素とend()を指すもののみ無効になる
Examples
vector-iter-reallocate.cc, and vector-ptr-reallocate.cc.

◆ resize() [2/2]

template<typename T >
void resize ( size_type  count,
const T &  value 
)
inline

サイズを変更

Parameters
count配列サイズ
valueサイズの増加分に挿入される要素
  • 再割り当てが発生した場合、既存のイテレータは無効になる。 そうでない場合、削除された要素とend()を指すもののみ無効になる

◆ shrink_to_fit()

template<typename T >
void shrink_to_fit ( )
inline

容量の縮小

  • 再割り当てが発生した場合、既存のイテレータは無効になる

◆ size()

template<typename T >
size_type size ( ) const
inline

配列のサイズを取得

◆ swap()

template<typename T >
void swap ( vector< T > &  other)
inline

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

  • 双方のend()を指す既存のイテレータは無効になる。

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