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

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

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

#include <vector.h>

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

Inheritance graph
[凡例]
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_type MaxSize>
class static_container::vector< Value, MaxSize >

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

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


型定義

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

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

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

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

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

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


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

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

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

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

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

00088                  : size_( 0 ) {
00089         }

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

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

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

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

00095                               : size_( s ) {
00096             BOOST_ASSERT( s <= max_size() );
00097             STATIC_VECTOR_FOREACH( new( it ) Value() )
00098         }

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

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

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

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

00103                                             : size_( s ) {
00104             BOOST_ASSERT( s <= max_size() );
00105             STATIC_VECTOR_FOREACH( new( it ) Value( v ) )
00106         }

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

コピーコンストラクタ

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

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

00108                                       : size_( other.size_ ) {
00109             const_iterator otherIt = other.begin();
00110             STATIC_VECTOR_FOREACH( new( it ) Value( *( otherIt++ ) ) )
00111         }

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

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

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

00113                   {
00114             clear();
00115         }


関数

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

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

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

00188                                          {
00189             std::fill_n( begin(), size(), value );
00190         }

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

代入

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

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

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

00126                                                    {
00127             clear();
00128             iterator dest = begin();
00129             for ( InputIt src = first; src != last; ++src ) {
00130                 new( dest ) Value( *src );
00131                 ++size_;
00132             }
00133         }

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

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

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

00174 { return operator [] ( i ); }

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

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

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

00173 { return operator [] ( i ); }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最大サイズ

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

容量取得

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

参照先 static_container::size_type.

00063 { return const_max; }

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

空ベクトル化

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

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

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

00155                      {
00156             for ( iterator it = begin(); it != end(); ++it ) {
00157                 destruct( *it );
00158             }
00159             size_ = 0;
00160         }

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

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

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

00042                                             {
00043             static_container::destruct< Value >( v );
00044         }

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

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

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

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

00170                            {
00171             return 0 == size();
00172         }

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

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

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

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

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

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

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

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

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

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

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

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

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

00146                                                     {
00147             difference_type sizeDiff = std::distance( first, last );
00148             rotate( first, last, end() );
00149             for ( size_type i = 0; i < sizeDiff; ++i ) {
00150                 pop_back();
00151             }
00152         }

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

it を削除します

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

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

00136                                   {
00137             rotate( it, it + 1, end() );
00138             pop_back();
00139         }

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

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

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

00178 { return *begin(); }

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

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

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

00177 { return *begin(); }

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

最大サイズ取得

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

参照先 static_container::size_type.

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

00060 { return const_max; }

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

代入演算子

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

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

00117                                                    {
00118             if ( this != &other ) {
00119                 assign( other.begin(), other.end() );
00120             }
00121             return *this;
00122         }

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

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

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

00166                                                        {
00167             PYD_ASSERT( i < size() );
00168             return *( begin() + i );
00169         }

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

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

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

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

00162                                            {
00163             PYD_ASSERT( i < size() );
00164             return *( begin() + i );
00165         }

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

末尾要素削除

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

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

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

00081                         {
00082             BOOST_ASSERT( false == empty() );
00083             --size_;
00084             destruct( top()[ size() ] );
00085         }

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

末尾に対する要素追加

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

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

00074                                        {
00075             BOOST_ASSERT( size() < max_size() );
00076             new( &top()[ size() ] ) Value( v );
00077             ++size_;
00078         }

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

サイズ取得

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

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

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

00066 { return size_; }

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

置換

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

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

00183                                    {
00184             std::swap_ranges( begin(), end(), other.begin() );
00185         }

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

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

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

00052                                     {
00053             return reinterpret_cast< const_pointer >( buffer_ );
00054         }

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

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

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

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

00047                       {
00048             return reinterpret_cast< pointer >( buffer_ );
00049         }


変数

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

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

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

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

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


このクラスの説明は次のファイルから生成されました:
static_containerに対してSat Jun 19 11:31:07 2004に生成されました。 doxygen 1.3.6