2009-08-24から1日間の記事一覧

std::mem_fun_ref関数を自作する

C++

前回の記事でstd::mem_fun_ref関数というのを習いました。多分処理的には難しいことはしてないだとうと思い、何も見ずに自作してみました。 #include <iostream> #include <functional> #include <vector> #include <algorithm> using std::cout; using std::endl; template <class T> class CMyMemFunRef { pub</class></algorithm></vector></functional></iostream>…

メンバ関数アダプタ std::mem_fun_ref関数

C++

http://www.geocities.jp/ky_webid/cpp/library/025.html例えばvectorのようなクラス型を持つvectorだとして、std::for_each等でそのクラスのメンバ関数を呼びたい場合、通常のやり方ではできません。そこでメンバ関数アダプタという物を利用します。 #inclu…

関数アダプタ ネゲータ

C++

http://www.geocities.jp/ky_webid/cpp/library/025.html今回はネゲータについて勉強したいと思います。これも関数アダプタの一つです。要は叙述関数の反対の結果得るための物です。まず比較のためにネゲータを使わずに普通に叙述関数を使った処理を書いて見…

using namespace stdを利用しないようにする

C++

最近色々と覚えてきたので何がstdで何がstdじゃないのか混乱しそうになってきました。やはり多少面倒臭いのもありますが、今後の記事でusing namespace stdはなるべく使わないようにします。coutやendlなど、よく使う物に関しては別途usingで対応します。こ…

関数アダプタ バインダ

C++

http://www.geocities.jp/ky_webid/cpp/library/025.html関数アダプタとは他の関数オブジェクトや値を、関数オブジェクトに組み合わせて新しく作成する関数オブジェクトということらしい。これだけじゃ何のことかさっぱりわかりませんね。というわけで実際の…

標準の関数オブジェクト

C++

http://www.geocities.jp/ky_webid/cpp/library/024.htmlfunctionalヘッダというものに標準的な関数オブジェクトが定義されています。以下にそのリストを上げてみます。ちなみに関数オブジェクトの引数に渡される変数名をparam1とparam2だと仮定します。 関…

adjacent_difference関数

C++

http://www.geocities.jp/ky_webid/cpp/library/023.html各要素間の差を求めます。これも実装例を見たほうが早いですね。 #include <iostream> #include <numeric> #include <vector> using namespace std; int main () { vector<int> data1; vector<int> data2; data1.push_back(10); data1.push_</int></int></vector></numeric></iostream>…

partial_sum関数

C++

http://www.geocities.jp/ky_webid/cpp/library/023.html部分和を求めるための関数です。順番にある値と次の値の加算結果を格納していきます。実装を見たほうがはやいですね。 #include <iostream> #include <numeric> #include <vector> using namespace std; int main () { vector<int> dat</int></vector></numeric></iostream>…

inner_product関数

C++

http://www.geocities.jp/ky_webid/cpp/library/023.html各要素を*演算子で乗算し、その結果を+演算子で加算していきます。言葉だけではわかりにくいので、まずinner_productと同等の処理をfor文で書いてみます。 #include <iostream> #include <numeric> #include <vector> using names</vector></numeric></iostream>…

accumulate関数

C++

http://www.geocities.jp/ky_webid/cpp/library/023.html数値演算のアルゴリズムをいくつか勉強したいと思います。これらはalgorithmヘッダではなく、numericヘッダに定義されています。まずはaccumulate関数について勉強します。これは指定された範囲内のデ…

transform関数

C++

http://www.geocities.jp/ky_webid/cpp/library/022.htmlcopy関数に似ていますが、transform関数は関数(や関数オブジェクト)を渡して独自の処理をしながら要素のコピーを行えます。int型のvectorで試してみます。 #include <iostream> #include <algorithm> #include <vector> using names</vector></algorithm></iostream>…