C++/TemplateMetaProgramming at TECH
[2ch|▼Menu]
130:デフォルトの名無しさん
08/06/02 03:18:17
>>125
で書いた事をもう少しわかりやすく説明すると
例えば以下のような型があったとき、
typedef boost::fusion::vector<char, int, char, int> vec;
vecから重複する型を削除してユニークな型を保持するようにしたいのです。
typedef hoge<vec>::type unique_vec; //こんなhogeを欲しているのです.
BOOST_MPL_ASSERT(( boost::is_same<unique_vec, boost::fusion::vector<char, int> > ))

それで、以下の仮想コードのような方法を使とO(n*n)の計算時間が掛ります.
for i∈vec
 for j∈vec
  もしiとjが同じ型だったらjをvecからはずす.

そこで
typedef
boost::mpl::unique<
 boost::mpl::sort<
  vec, piyo>::type,
 is_same<_1, _2> >::type
unique_vec;
とやればO(n*log(n))の計算量で済みます。
そこで上記のpiyoに相当するMetafunction class、
すなわち型に順序関係を与える方法を教えて貰いたいのです。

>>128
referenceにはboost::mpl::findは線形時間が掛ると書いてあるので
二分探索するには自分でコードを書かないといけないようです.



次ページ
続きを表示
1を表示
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5497日前に更新/39 KB
担当:undef