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

クラス テンプレートstatic_container::hash< Key, Value, Cont, KeyEqual >

コンテナは std::pair< Key, Value > を格納可能でなければならない。 [詳細]

#include <hash.h>

static_container::hash< Key, Value, Cont, KeyEqual >に対する継承グラフ

Inheritance graph
[凡例]
static_container::hash< Key, Value, Cont, KeyEqual >のコラボレーション図

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

Public 型

typedef std::pair< Key, Value > pair_type
typedef Cont::iterator iterator
typedef Cont::const_iterator const_iterator
typedef boost::call_traits<
KeyEqual >::param_type 
key_equal

Public メソッド

 STATIC_CONTAINER_MEMBERTYPEDEF (pair_type)
 hash (key_equal equal=KeyEqual())
 hash (const Cont &cont, key_equal equal=KeyEqual())
iterator begin ()
iterator end ()
const_iterator begin () const
const_iterator end () const
const_iterator find (typename boost::call_traits< Key >::param_type key) const
iterator find (typename boost::call_traits< Key >::param_type key)
bool empty () const
size_type size () const
const Value & search (typename boost::call_traits< Key >::param_type key) const
Value & search (typename boost::call_traits< Key >::param_type key)
Value & operator[] (typename boost::call_traits< Key >::param_type key)
 単なる検索目的でむやみに使うと、挿入が何度も行われるので、使用には十分ご注意を。

std::pair< iterator, bool > insert (const_reference v)
void erase (iterator it)
void clear ()
Cont & get_container ()
 コンテナ取得

const Cont & get_container () const
 コンテナ取得


Private メソッド

iterator push_back (const_reference v)

Private 変数

Cont cont_
KeyEqual equal_

説明

template<typename Key, typename Value, typename Cont, typename KeyEqual = std::equal_to< Key >>
class static_container::hash< Key, Value, Cont, KeyEqual >

コンテナは std::pair< Key, Value > を格納可能でなければならない。

挿入、削除なども可能。

挿入は、コンテナの push_back() を使い実装されている。 削除は、コンテナの erase() を使い実装されている。 クリアは、コンテナの clear() を使い実装されている。

hash.h21 行で定義されています。


型定義

template<typename Key, typename Value, typename Cont, typename KeyEqual = std::equal_to< Key >>
typedef Cont::const_iterator static_container::hash< Key, Value, Cont, KeyEqual >::const_iterator
 

static_container::list_hash< Key, Value, MaxSize, KeyEqual >で再定義されています。

hash.h26 行で定義されています。

template<typename Key, typename Value, typename Cont, typename KeyEqual = std::equal_to< Key >>
typedef Cont::iterator static_container::hash< Key, Value, Cont, KeyEqual >::iterator
 

static_container::list_hash< Key, Value, MaxSize, KeyEqual >で再定義されています。

hash.h25 行で定義されています。

template<typename Key, typename Value, typename Cont, typename KeyEqual = std::equal_to< Key >>
typedef boost::call_traits< KeyEqual >::param_type static_container::hash< Key, Value, Cont, KeyEqual >::key_equal
 

hash.h27 行で定義されています。

参照元 static_container::hash< Key, Value, Cont, KeyEqual >::key_comp::key_comp().

template<typename Key, typename Value, typename Cont, typename KeyEqual = std::equal_to< Key >>
typedef std::pair< Key, Value > static_container::hash< Key, Value, Cont, KeyEqual >::pair_type
 

hash.h23 行で定義されています。


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

template<typename Key, typename Value, typename Cont, typename KeyEqual = std::equal_to< Key >>
static_container::hash< Key, Value, Cont, KeyEqual >::hash key_equal  equal = KeyEqual()  )  [inline]
 

hash.h50 行で定義されています。

00050 : cont_(), equal_( equal ) {}

template<typename Key, typename Value, typename Cont, typename KeyEqual = std::equal_to< Key >>
static_container::hash< Key, Value, Cont, KeyEqual >::hash const Cont &  cont,
key_equal  equal = KeyEqual()
[inline]
 

hash.h51 行で定義されています。

00051 : cont_( cont ), equal_( equal ) {}


関数

template<typename Key, typename Value, typename Cont, typename KeyEqual = std::equal_to< Key >>
const_iterator static_container::hash< Key, Value, Cont, KeyEqual >::begin  )  const [inline]
 

hash.h61 行で定義されています。

00061                                      {
00062             return cont_.begin();
00063         }

template<typename Key, typename Value, typename Cont, typename KeyEqual = std::equal_to< Key >>
iterator static_container::hash< Key, Value, Cont, KeyEqual >::begin  )  [inline]
 

hash.h53 行で定義されています。

参照元 static_container::hash< Key, Value, list< std::pair< Key, Value >, MaxSize >, KeyEqual >::empty(), static_container::hash< Key, Value, list< std::pair< Key, Value >, MaxSize >, KeyEqual >::find(), と static_container::hash< Key, Value, list< std::pair< Key, Value >, MaxSize >, KeyEqual >::size().

00053                          {
00054             return cont_.begin();
00055         }

template<typename Key, typename Value, typename Cont, typename KeyEqual = std::equal_to< Key >>
void static_container::hash< Key, Value, Cont, KeyEqual >::clear  )  [inline]
 

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

00127                      {
00128             cont_.clear();
00129         }

template<typename Key, typename Value, typename Cont, typename KeyEqual = std::equal_to< Key >>
bool static_container::hash< Key, Value, Cont, KeyEqual >::empty  )  const [inline]
 

hash.h77 行で定義されています。

00077                            {
00078             return begin() == end();
00079         }

template<typename Key, typename Value, typename Cont, typename KeyEqual = std::equal_to< Key >>
const_iterator static_container::hash< Key, Value, Cont, KeyEqual >::end  )  const [inline]
 

hash.h65 行で定義されています。

00065                                    {
00066             return cont_.end();
00067         }

template<typename Key, typename Value, typename Cont, typename KeyEqual = std::equal_to< Key >>
iterator static_container::hash< Key, Value, Cont, KeyEqual >::end  )  [inline]
 

hash.h57 行で定義されています。

参照元 static_container::hash< Key, Value, list< std::pair< Key, Value >, MaxSize >, KeyEqual >::empty(), static_container::hash< Key, Value, list< std::pair< Key, Value >, MaxSize >, KeyEqual >::find(), static_container::hash< Key, Value, list< std::pair< Key, Value >, MaxSize >, KeyEqual >::insert(), static_container::hash< Key, Value, list< std::pair< Key, Value >, MaxSize >, KeyEqual >::operator[](), static_container::hash< Key, Value, list< std::pair< Key, Value >, MaxSize >, KeyEqual >::push_back(), と static_container::hash< Key, Value, list< std::pair< Key, Value >, MaxSize >, KeyEqual >::size().

00057                        {
00058             return cont_.end();
00059         }

template<typename Key, typename Value, typename Cont, typename KeyEqual = std::equal_to< Key >>
void static_container::hash< Key, Value, Cont, KeyEqual >::erase iterator  it  )  [inline]
 

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

00124                                   {
00125             cont_.erase( it );
00126         }

template<typename Key, typename Value, typename Cont, typename KeyEqual = std::equal_to< Key >>
iterator static_container::hash< Key, Value, Cont, KeyEqual >::find typename boost::call_traits< Key >::param_type  key  )  [inline]
 

hash.h73 行で定義されています。

00073                                                                         {
00074             return find_if( begin(), end(), key_comp( key, equal_ ) );
00075         }

template<typename Key, typename Value, typename Cont, typename KeyEqual = std::equal_to< Key >>
const_iterator static_container::hash< Key, Value, Cont, KeyEqual >::find typename boost::call_traits< Key >::param_type  key  )  const [inline]
 

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

参照元 static_container::hash< Key, Value, list< std::pair< Key, Value >, MaxSize >, KeyEqual >::insert(), static_container::hash< Key, Value, list< std::pair< Key, Value >, MaxSize >, KeyEqual >::operator[](), と static_container::hash< Key, Value, list< std::pair< Key, Value >, MaxSize >, KeyEqual >::search().

00069                                                                                     {
00070             return find_if( begin(), end(), key_comp( key, equal_ ) );
00071         }

template<typename Key, typename Value, typename Cont, typename KeyEqual = std::equal_to< Key >>
const Cont& static_container::hash< Key, Value, Cont, KeyEqual >::get_container  )  const [inline]
 

コンテナ取得

hash.h137 行で定義されています。

00137                                           {
00138             return cont_;
00139         }

template<typename Key, typename Value, typename Cont, typename KeyEqual = std::equal_to< Key >>
Cont& static_container::hash< Key, Value, Cont, KeyEqual >::get_container  )  [inline]
 

コンテナ取得

hash.h132 行で定義されています。

00132                               {
00133             return cont_;
00134         }

template<typename Key, typename Value, typename Cont, typename KeyEqual = std::equal_to< Key >>
std::pair< iterator, bool > static_container::hash< Key, Value, Cont, KeyEqual >::insert const_reference  v  )  [inline]
 

戻り値:
first が、挿入後のイテレーター。second が挿入作業の有無を示す bool からなる pair を返す

hash.h110 行で定義されています。

00110                                                               {
00111             iterator it = find( v.first );
00112             if ( it != end() ) {
00113                 //  すでに同じキーのペアが存在したので、それを返す
00114                 return std::make_pair(
00115                     it,
00116                     false );
00117             } else {
00118                 //  存在しなかったので挿入
00119                 return std::make_pair(
00120                     push_back( v ),
00121                     false );
00122             }
00123         }

template<typename Key, typename Value, typename Cont, typename KeyEqual = std::equal_to< Key >>
Value& static_container::hash< Key, Value, Cont, KeyEqual >::operator[] typename boost::call_traits< Key >::param_type  key  )  [inline]
 

単なる検索目的でむやみに使うと、挿入が何度も行われるので、使用には十分ご注意を。

hash.h97 行で定義されています。

00097                                                                               {
00098             iterator it = find( key );
00099             if ( it != end() ) {
00100                 return it->second;
00101             } else {
00102                 return push_back( value_type( key, Value() ) )->second;
00103             }
00104         }

template<typename Key, typename Value, typename Cont, typename KeyEqual = std::equal_to< Key >>
iterator static_container::hash< Key, Value, Cont, KeyEqual >::push_back const_reference  v  )  [inline, private]
 

hash.h43 行で定義されています。

参照元 static_container::hash< Key, Value, list< std::pair< Key, Value >, MaxSize >, KeyEqual >::insert(), と static_container::hash< Key, Value, list< std::pair< Key, Value >, MaxSize >, KeyEqual >::operator[]().

00043                                                 {
00044             cont_.push_back( v );
00045             iterator it = end();
00046             --it;
00047             return it;
00048         }

template<typename Key, typename Value, typename Cont, typename KeyEqual = std::equal_to< Key >>
Value& static_container::hash< Key, Value, Cont, KeyEqual >::search typename boost::call_traits< Key >::param_type  key  )  [inline]
 

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

00089                                                                         {
00090             return find( key )->second;
00091         }

template<typename Key, typename Value, typename Cont, typename KeyEqual = std::equal_to< Key >>
const Value& static_container::hash< Key, Value, Cont, KeyEqual >::search typename boost::call_traits< Key >::param_type  key  )  const [inline]
 

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

00085                                                                                     {
00086             return find( key )->second;
00087         }

template<typename Key, typename Value, typename Cont, typename KeyEqual = std::equal_to< Key >>
size_type static_container::hash< Key, Value, Cont, KeyEqual >::size  )  const [inline]
 

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

00081                                {
00082             return std::distance( begin(), end() );
00083         }

template<typename Key, typename Value, typename Cont, typename KeyEqual = std::equal_to< Key >>
static_container::hash< Key, Value, Cont, KeyEqual >::STATIC_CONTAINER_MEMBERTYPEDEF pair_type   ) 
 


変数

template<typename Key, typename Value, typename Cont, typename KeyEqual = std::equal_to< Key >>
Cont static_container::hash< Key, Value, Cont, KeyEqual >::cont_ [private]
 

hash.h30 行で定義されています。

template<typename Key, typename Value, typename Cont, typename KeyEqual = std::equal_to< Key >>
KeyEqual static_container::hash< Key, Value, Cont, KeyEqual >::equal_ [private]
 

hash.h31 行で定義されています。


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