C++/TemplateMetaProgramming
at TECH
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