[cppll:0055] <tips> 双方向map

Subject:
[cppll:0055] <tips> 双方向map
From:
Toshihiko 'Chin' Ando <andochin@...>
Date:
Tue, 11 Dec 2001 17:48:05 +0900
X-Mailer:
WZ MAIL 4.00E
Message-Id:
<20011211173010.7764805.-255400089‐at‐ngy.3web.ne.jp>
いつもお世話になっております。
安藤@名古屋市北区在住です。

またまた小ネタです。
以前作ったもの。mapで値からキーが欲しかった時に作成。
これも順次比較するので検索は頗る遅いです。
し・か・も同一の値が複数ある場合のことが考慮されていない…。


//
//  双方向マップ
//  要素からイテレータを返すことが出来るようにする
//
template<class Key, class T, class Pred = less<Key>, class A = allocator<T> >
class mutal_map : public map< Key, T, Pred, A >
{
public:
   typedef map<Key, T, Pred, A>::iterator iterator;
   //
   //  最初に値の一致したイテレータを返す
   //
   const iterator find_by_value( const T& value ) {
       iterator    it = begin();
       while(it != end()) {
           if( it->second == value ) {
               break;
           }
           it ++;
       }
       return it;
   }

   //
   //  要素を削除
   //
   bool delete_element( const iterator& it ) {
       if(it == end()) {
           return    false;
       }
       erase(it);
       return    true;
   }
   bool    delete_element( Key& value ) { return delete_element(find(value)); }
   bool    delete_element( T& value ) { return delete_element(find_by_value( value )); }
};


---------------------------------------------------------
Toshihiko 'Chin' Ando
mail : andochin@...

スレッド

Navigation

検索

[検索ヘルプ]

Maintener: Tietew <www.tietew.jp>
Powered by Ruby on Rails, Mongrel, PostgreSQL, and Hyper Estraier.
click here