2007-05-03から1日間の記事一覧

演算子オーバーロードの優先

C++

同じシグネチャの演算子オーバーロードをメンバ関数とfriend関数で行った場合 どちらが優先されるのか気になったので調べてみました。 #include <iostream> using namespace std; class Hoge { public: bool operator==(const int a) { return true; } friend bool ope</iostream>…

binder

C++

std::bind1st, std::bind2nd(をカリー化したもの)の型はこんなかんじ bind1st: binary_function<T1, T2, R> -> T1 -> unary_function<T2, R> bind2nd: binary_function<T1, T2, R> -> T2 -> unary_function<T1, R>OCamlで書くと bind1st = fun f x -> fun y -> f x y bind2nd = fun f y -> fun </t1,></t1,></t2,></t1,>…

std::nth_elemtnt

C++

std::nth_elemtnt の挙動を説明するのに nth_element(first, middle, last); は partial_sort(first, middle+1, last); random_shuffle(first, middle); を線形時間でやる、というのはどうか。実装はこのへんかな。Median of Medians は覚えておこう。

引数

C++

std::priority_queue は、テンプレート引数とコンストラクタの引数の順序に不整合があって気持ち悪い。テンプレート引数は、『要素の型・実装に使うコンテナの型・比較ファンクタクラス』の順 template <class T, class Container = vector<T>, class Compare = less<typename Container::value_type> > class priority_queue; コン</typename></class>…