メインページ | ネームスペース一覧 | クラス階層 | 構成 | ファイル一覧 | ネームスペースメンバ | 構成メンバ | ファイルメンバ | 関連ページ

クラス テンプレートgslib::static_container::vector< Value, MaxSize >

現在、データは、4 byte アラインしか保障されません。 SIMD 用データなど 4 byte ではアラインが足りない場合は、今後拡張するので、 言ってください。 やり方としては、buffer_ をアライン分余分にとって、 実行時に this を見て、必要オフセットを設定しバッファを利用する予定です。 [詳細]

#include <vector.h>

gslib::static_container::vector< Value, MaxSize >に対する継承グラフ

Inheritance graph
[凡例]
gslib::static_container::vector< Value, MaxSize >のコラボレーション図

Collaboration graph
[凡例]
すべてのメンバ一覧

Public 型

typedef boost::call_traits<
Value >::param_type 
param_type
typedef pointer iterator
typedef const_pointer const_iterator

Public メソッド

 BOOST_STATIC_CONSTANT (size_type, const_max=MaxSize)
 最大サイズ

size_type size () const
 サイズ取得

iterator begin ()
const_iterator begin () const
iterator end ()
const_iterator end () const
void push_back (param_type v)
 末尾に対する要素追加

void pop_back ()
 末尾要素削除

 vector ()
 デフォルトコンストラクタ

 vector (size_type s)
 各要素に対しては、デフォルトコンストラクタを呼び出す

 vector (size_type s, param_type v)
 各要素に対しては、コピーコンストラクタを呼び出す

 vector (const vector &other)
 コピーコンストラクタ

 ~vector ()
vectoroperator= (const vector &other)
 代入演算子

template<typename InputIt> void assign (InputIt first, InputIt last)
 代入

void erase (iterator it)
 it を削除します

void erase (iterator first, iterator last)
 現在、非常に重い動作です。 要望があれば高速化します。

void clear ()
 空ベクトル化

Value & operator[] (size_type i)
const Value & operator[] (size_type i) const
bool empty () const
reference at (size_type i)
param_type at (size_type i) const
reference front ()
param_type front () const
reference back ()
param_type back () const
void swap (vector &other)
 置換

void assign (param_type value)

Static Public メソッド

size_type max_size ()
 最大サイズ取得

size_type capaciry ()
 容量取得


Private メソッド

pointer top ()
 実装用。 先頭要素のアドレスを得る

const_pointer top () const
 実装用。 先頭要素のアドレスを得る


Static Private メソッド

void destruct (reference v)

Private 変数

size_type size_
uint8_t buffer_ [MaxSize *sizeof(Value)]

説明

template<typename Value, size_t MaxSize>
class gslib::static_container::vector< Value, MaxSize >

現在、データは、4 byte アラインしか保障されません。 SIMD 用データなど 4 byte ではアラインが足りない場合は、今後拡張するので、 言ってください。 やり方としては、buffer_ をアライン分余分にとって、 実行時に this を見て、必要オフセットを設定しバッファを利用する予定です。

vector.h85 行で定義されています。


型定義

template<typename Value, size_t MaxSize>
typedef const_pointer gslib::static_container::vector< Value, MaxSize >::const_iterator
 

vector.h90 行で定義されています。

template<typename Value, size_t MaxSize>
typedef pointer gslib::static_container::vector< Value, MaxSize >::iterator
 

vector.h89 行で定義されています。

template<typename Value, size_t MaxSize>
typedef boost::call_traits< Value >::param_type gslib::static_container::vector< Value, MaxSize >::param_type
 

vector.h88 行で定義されています。


コンストラクタとデストラクタ

template<typename Value, size_t MaxSize>
gslib::static_container::vector< Value, MaxSize >::vector  )  [inline]
 

デフォルトコンストラクタ

vector.h141 行で定義されています。

参照先 gslib::static_container::vector< Value, MaxSize >::size_.

00141                      : size_( 0 ) {
00142             }

template<typename Value, size_t MaxSize>
gslib::static_container::vector< Value, MaxSize >::vector size_type  s  )  [inline]
 

各要素に対しては、デフォルトコンストラクタを呼び出す

vector.h148 行で定義されています。

参照先 gslib::static_container::vector< Value, MaxSize >::max_size(), gslib::static_container::vector< Value, MaxSize >::size_, と STATIC_VECTOR_FOREACH.

00148                                   : size_( s ) {
00149                 BOOST_ASSERT( s <= max_size() );
00150                 STATIC_VECTOR_FOREACH( new( it ) Value() )
00151             }

関数の呼び出しグラフ:

template<typename Value, size_t MaxSize>
gslib::static_container::vector< Value, MaxSize >::vector size_type  s,
param_type  v
[inline]
 

各要素に対しては、コピーコンストラクタを呼び出す

vector.h156 行で定義されています。

参照先 gslib::static_container::vector< Value, MaxSize >::max_size(), gslib::static_container::vector< Value, MaxSize >::size_, と STATIC_VECTOR_FOREACH.

00156                                                 : size_( s ) {
00157                 BOOST_ASSERT( s <= max_size() );
00158                 STATIC_VECTOR_FOREACH( new( it ) Value( v ) )
00159             }

関数の呼び出しグラフ:

template<typename Value, size_t MaxSize>
gslib::static_container::vector< Value, MaxSize >::vector const vector< Value, MaxSize > &  other  )  [inline]
 

コピーコンストラクタ

vector.h161 行で定義されています。

参照先 gslib::static_container::vector< Value, MaxSize >::begin(), gslib::static_container::vector< Value, MaxSize >::size_, と STATIC_VECTOR_FOREACH.

00161                                           : size_( other.size_ ) {
00162                 const_iterator otherIt = other.begin();
00163                 STATIC_VECTOR_FOREACH( new( it ) Value( *( otherIt++ ) ) )
00164             }

関数の呼び出しグラフ:

template<typename Value, size_t MaxSize>
gslib::static_container::vector< Value, MaxSize >::~vector  )  [inline]
 

vector.h166 行で定義されています。

参照先 gslib::static_container::vector< Value, MaxSize >::clear().

00166                       {
00167                 clear();
00168             }

関数の呼び出しグラフ:


関数

template<typename Value, size_t MaxSize>
void gslib::static_container::vector< Value, MaxSize >::assign param_type  value  )  [inline]
 

vector.h241 行で定義されています。

参照先 gslib::static_container::vector< Value, MaxSize >::begin(), と gslib::static_container::vector< Value, MaxSize >::size().

00241                                              {
00242                 std::fill_n( begin(), size(), value );
00243             }

関数の呼び出しグラフ:

template<typename Value, size_t MaxSize>
template<typename InputIt>
void gslib::static_container::vector< Value, MaxSize >::assign InputIt  first,
InputIt  last
[inline]
 

代入

vector.h179 行で定義されています。

参照先 gslib::static_container::vector< Value, MaxSize >::begin(), gslib::static_container::vector< Value, MaxSize >::clear(), と gslib::static_container::vector< Value, MaxSize >::size_.

参照元 gslib::static_container::vector< Value, MaxSize >::operator=().

00179                                                        {
00180                 clear();
00181                 iterator dest = begin();
00182                 for ( InputIt src = first; src != last; ++src, ++dest ) {
00183                     new( dest ) Value( *src );
00184                     ++size_;
00185                 }
00186             }

関数の呼び出しグラフ:

template<typename Value, size_t MaxSize>
param_type gslib::static_container::vector< Value, MaxSize >::at size_type  i  )  const [inline]
 

vector.h227 行で定義されています。

参照先 gslib::static_container::vector< Value, MaxSize >::operator[]().

00227 { return operator [] ( i ); }

関数の呼び出しグラフ:

template<typename Value, size_t MaxSize>
reference gslib::static_container::vector< Value, MaxSize >::at size_type  i  )  [inline]
 

vector.h226 行で定義されています。

参照先 gslib::static_container::vector< Value, MaxSize >::operator[]().

00226 { return operator [] ( i ); }

関数の呼び出しグラフ:

template<typename Value, size_t MaxSize>
param_type gslib::static_container::vector< Value, MaxSize >::back  )  const [inline]
 

vector.h233 行で定義されています。

参照先 gslib::static_container::vector< Value, MaxSize >::end().

00233 { return *( end() - 1 ); }

関数の呼び出しグラフ:

template<typename Value, size_t MaxSize>
reference gslib::static_container::vector< Value, MaxSize >::back  )  [inline]
 

vector.h232 行で定義されています。

参照先 gslib::static_container::vector< Value, MaxSize >::end().

00232 { return *( end() - 1 ); }

関数の呼び出しグラフ:

template<typename Value, size_t MaxSize>
const_iterator gslib::static_container::vector< Value, MaxSize >::begin  )  const [inline]
 

vector.h122 行で定義されています。

参照先 gslib::static_container::vector< Value, MaxSize >::top().

00122 { return reinterpret_cast< const_iterator >( top() ); }

関数の呼び出しグラフ:

template<typename Value, size_t MaxSize>
iterator gslib::static_container::vector< Value, MaxSize >::begin  )  [inline]
 

vector.h121 行で定義されています。

参照先 gslib::static_container::vector< Value, MaxSize >::top().

参照元 gslib::static_container::vector< Value, MaxSize >::assign(), gslib::static_container::vector< Value, MaxSize >::clear(), gslib::static_container::vector< Value, MaxSize >::end(), gslib::static_container::vector< Value, MaxSize >::front(), gslib::static_container::vector< Value, MaxSize >::operator=(), gslib::static_container::vector< Value, MaxSize >::operator[](), gslib::static_container::vector< Value, MaxSize >::swap(), と gslib::static_container::vector< Value, MaxSize >::vector().

00121 { return reinterpret_cast< iterator >( top() ); }

関数の呼び出しグラフ:

template<typename Value, size_t MaxSize>
gslib::static_container::vector< Value, MaxSize >::BOOST_STATIC_CONSTANT size_type  ,
const_max  = MaxSize
 

最大サイズ

template<typename Value, size_t MaxSize>
size_type gslib::static_container::vector< Value, MaxSize >::capaciry  )  [inline, static]
 

容量取得

vector.h116 行で定義されています。

00116 { return const_max; }

template<typename Value, size_t MaxSize>
void gslib::static_container::vector< Value, MaxSize >::clear  )  [inline]
 

空ベクトル化

vector.h208 行で定義されています。

参照先 gslib::static_container::vector< Value, MaxSize >::begin(), gslib::static_container::vector< Value, MaxSize >::destruct(), gslib::static_container::vector< Value, MaxSize >::end(), と gslib::static_container::vector< Value, MaxSize >::size_.

参照元 gslib::static_container::vector< Value, MaxSize >::assign(), と gslib::static_container::vector< Value, MaxSize >::~vector().

00208                          {
00209                 for ( iterator it = begin(); it != end(); ++it ) {
00210                     destruct( *it );
00211                 }
00212                 size_ = 0;
00213             }

関数の呼び出しグラフ:

template<typename Value, size_t MaxSize>
void gslib::static_container::vector< Value, MaxSize >::destruct reference  v  )  [inline, static, private]
 

vector.h95 行で定義されています。

参照元 gslib::static_container::vector< Value, MaxSize >::clear(), と gslib::static_container::vector< Value, MaxSize >::pop_back().

00095                                                 {
00096                 static_container::destruct< Value >( v );
00097             }

template<typename Value, size_t MaxSize>
bool gslib::static_container::vector< Value, MaxSize >::empty  )  const [inline]
 

vector.h223 行で定義されています。

参照先 gslib::static_container::vector< Value, MaxSize >::size().

参照元 gslib::static_container::vector< Value, MaxSize >::pop_back().

00223                                {
00224                 return 0 == size();
00225             }

関数の呼び出しグラフ:

template<typename Value, size_t MaxSize>
const_iterator gslib::static_container::vector< Value, MaxSize >::end  )  const [inline]
 

vector.h124 行で定義されています。

参照先 gslib::static_container::vector< Value, MaxSize >::begin(), と gslib::static_container::vector< Value, MaxSize >::size().

00124 { return begin() + size(); }

関数の呼び出しグラフ:

template<typename Value, size_t MaxSize>
iterator gslib::static_container::vector< Value, MaxSize >::end  )  [inline]
 

vector.h123 行で定義されています。

参照先 gslib::static_container::vector< Value, MaxSize >::begin(), と gslib::static_container::vector< Value, MaxSize >::size().

参照元 gslib::static_container::vector< Value, MaxSize >::back(), gslib::static_container::vector< Value, MaxSize >::clear(), gslib::static_container::vector< Value, MaxSize >::erase(), gslib::static_container::vector< Value, MaxSize >::operator=(), と gslib::static_container::vector< Value, MaxSize >::swap().

00123 { return begin() + size(); }

関数の呼び出しグラフ:

template<typename Value, size_t MaxSize>
void gslib::static_container::vector< Value, MaxSize >::erase iterator  first,
iterator  last
[inline]
 

現在、非常に重い動作です。 要望があれば高速化します。

vector.h199 行で定義されています。

参照先 gslib::static_container::vector< Value, MaxSize >::end(), と gslib::static_container::vector< Value, MaxSize >::pop_back().

00199                                                         {
00200                 difference_type sizeDiff = std::distance( first, last );
00201                 rotate( first, last, end() );
00202                 for ( size_type i = 0; i < sizeDiff; ++i ) {
00203                     pop_back();
00204                 }
00205             }

関数の呼び出しグラフ:

template<typename Value, size_t MaxSize>
void gslib::static_container::vector< Value, MaxSize >::erase iterator  it  )  [inline]
 

it を削除します

vector.h189 行で定義されています。

参照先 gslib::static_container::vector< Value, MaxSize >::end(), と gslib::static_container::vector< Value, MaxSize >::pop_back().

00189                                       {
00190                 rotate( it, it + 1, end() );
00191                 pop_back();
00192             }

関数の呼び出しグラフ:

template<typename Value, size_t MaxSize>
param_type gslib::static_container::vector< Value, MaxSize >::front  )  const [inline]
 

vector.h231 行で定義されています。

参照先 gslib::static_container::vector< Value, MaxSize >::begin().

00231 { return *begin(); }

関数の呼び出しグラフ:

template<typename Value, size_t MaxSize>
reference gslib::static_container::vector< Value, MaxSize >::front  )  [inline]
 

vector.h230 行で定義されています。

参照先 gslib::static_container::vector< Value, MaxSize >::begin().

00230 { return *begin(); }

関数の呼び出しグラフ:

template<typename Value, size_t MaxSize>
size_type gslib::static_container::vector< Value, MaxSize >::max_size  )  [inline, static]
 

最大サイズ取得

vector.h113 行で定義されています。

参照元 gslib::static_container::vector< Value, MaxSize >::push_back(), と gslib::static_container::vector< Value, MaxSize >::vector().

00113 { return const_max; }

template<typename Value, size_t MaxSize>
vector& gslib::static_container::vector< Value, MaxSize >::operator= const vector< Value, MaxSize > &  other  )  [inline]
 

代入演算子

vector.h170 行で定義されています。

参照先 gslib::static_container::vector< Value, MaxSize >::assign(), gslib::static_container::vector< Value, MaxSize >::begin(), と gslib::static_container::vector< Value, MaxSize >::end().

00170                                                        {
00171                 if ( this != &other ) {
00172                     assign( other.begin(), other.end() );
00173                 }
00174                 return *this;
00175             }

関数の呼び出しグラフ:

template<typename Value, size_t MaxSize>
const Value& gslib::static_container::vector< Value, MaxSize >::operator[] size_type  i  )  const [inline]
 

vector.h219 行で定義されています。

参照先 gslib::static_container::vector< Value, MaxSize >::begin(), と gslib::static_container::vector< Value, MaxSize >::size().

00219                                                            {
00220                 PYD_ASSERT( i < size() );
00221                 return *( begin() + i );
00222             }

関数の呼び出しグラフ:

template<typename Value, size_t MaxSize>
Value& gslib::static_container::vector< Value, MaxSize >::operator[] size_type  i  )  [inline]
 

vector.h215 行で定義されています。

参照先 gslib::static_container::vector< Value, MaxSize >::begin(), と gslib::static_container::vector< Value, MaxSize >::size().

参照元 gslib::static_container::vector< Value, MaxSize >::at().

00215                                                {
00216                 PYD_ASSERT( i < size() );
00217                 return *( begin() + i );
00218             }

関数の呼び出しグラフ:

template<typename Value, size_t MaxSize>
void gslib::static_container::vector< Value, MaxSize >::pop_back  )  [inline]
 

末尾要素削除

vector.h134 行で定義されています。

参照先 gslib::static_container::vector< Value, MaxSize >::destruct(), gslib::static_container::vector< Value, MaxSize >::empty(), gslib::static_container::vector< Value, MaxSize >::size(), gslib::static_container::vector< Value, MaxSize >::size_, と gslib::static_container::vector< Value, MaxSize >::top().

参照元 gslib::static_container::vector< Value, MaxSize >::erase().

00134                             {
00135                 BOOST_ASSERT( false == empty() );
00136                 --size_;
00137                 destruct( top()[ size() ] );
00138             }

関数の呼び出しグラフ:

template<typename Value, size_t MaxSize>
void gslib::static_container::vector< Value, MaxSize >::push_back param_type  v  )  [inline]
 

末尾に対する要素追加

vector.h127 行で定義されています。

参照先 gslib::static_container::vector< Value, MaxSize >::max_size(), gslib::static_container::vector< Value, MaxSize >::size(), gslib::static_container::vector< Value, MaxSize >::size_, と gslib::static_container::vector< Value, MaxSize >::top().

00127                                            {
00128                 BOOST_ASSERT( size() < max_size() );
00129                 new( &top()[ size() ] ) Value( v );
00130                 ++size_;
00131             }

関数の呼び出しグラフ:

template<typename Value, size_t MaxSize>
size_type gslib::static_container::vector< Value, MaxSize >::size  )  const [inline]
 

サイズ取得

vector.h119 行で定義されています。

参照先 gslib::static_container::vector< Value, MaxSize >::size_.

参照元 gslib::static_container::vector< Value, MaxSize >::assign(), gslib::static_container::vector< Value, MaxSize >::empty(), gslib::static_container::vector< Value, MaxSize >::end(), gslib::static_container::vector< Value, MaxSize >::operator[](), gslib::static_container::vector< Value, MaxSize >::pop_back(), と gslib::static_container::vector< Value, MaxSize >::push_back().

00119 { return size_; }

template<typename Value, size_t MaxSize>
void gslib::static_container::vector< Value, MaxSize >::swap vector< Value, MaxSize > &  other  )  [inline]
 

置換

vector.h236 行で定義されています。

参照先 gslib::static_container::vector< Value, MaxSize >::begin(), と gslib::static_container::vector< Value, MaxSize >::end().

00236                                        {
00237                 std::swap_ranges( begin(), end(), other.begin() );
00238             }

関数の呼び出しグラフ:

template<typename Value, size_t MaxSize>
const_pointer gslib::static_container::vector< Value, MaxSize >::top  )  const [inline, private]
 

実装用。 先頭要素のアドレスを得る

vector.h105 行で定義されています。

00105                                         {
00106                 return reinterpret_cast< const_pointer >( buffer_ );
00107             }

template<typename Value, size_t MaxSize>
pointer gslib::static_container::vector< Value, MaxSize >::top  )  [inline, private]
 

実装用。 先頭要素のアドレスを得る

vector.h100 行で定義されています。

参照元 gslib::static_container::vector< Value, MaxSize >::begin(), gslib::static_container::vector< Value, MaxSize >::pop_back(), と gslib::static_container::vector< Value, MaxSize >::push_back().

00100                           {
00101                 return reinterpret_cast< pointer >( buffer_ );
00102             }


変数

template<typename Value, size_t MaxSize>
uint8_t gslib::static_container::vector< Value, MaxSize >::buffer_[ MaxSize * sizeof( Value ) ] [private]
 

vector.h93 行で定義されています。

template<typename Value, size_t MaxSize>
size_type gslib::static_container::vector< Value, MaxSize >::size_ [private]
 

vector.h92 行で定義されています。

参照元 gslib::static_container::vector< Value, MaxSize >::assign(), gslib::static_container::vector< Value, MaxSize >::clear(), gslib::static_container::vector< Value, MaxSize >::pop_back(), gslib::static_container::vector< Value, MaxSize >::push_back(), gslib::static_container::vector< Value, MaxSize >::size(), と gslib::static_container::vector< Value, MaxSize >::vector().


このクラスの説明は次のファイルから生成されました:
static_containerに対してSat Nov 27 15:03:37 2004に生成されました。 doxygen 1.3.6