C++のメモ書き

実験しようと思うもあれこれ詰まる。。。

  • 親クラスのメソッドを呼び出す
    • 子クラスに同名のメソッドがあるとして。base::do_something(hoge);のような形で呼べばよい。
    • baseが変わったら子クラスのほうを書き換えるのが面倒なんだが、Javaでいうところのsuperみたいなのはあるのか?
    • ::はスコープ演算子というらしい
  • スレッドプール
    • 立ち上げるスレッドの上限は決まっていて、待ち行列っぽい感じで空いたらタスクをつっこんでいきたい
    • Boost.Asioというやつがよさそう。かなり簡単に使える
    • doukaku.org -  => 分かりやすい
    • gxpで実行するのはいいんだけど、あとで集計するのがなかなかあれ
  • Boost.Lambdaで無名関数
  • 罠がいくつかあるので注意 => Boost C++ Librariesプログラミング第2版
    • C++の演算子結合の順序で_1のラムダ式化の前に評価されてしまうことがあるのでconstant関数などを使うとよい
    • std::endlが使えないので、\nなどを使う
    • _1がBoost.Bindのものと同じ名前なので毎回名前空間を指定するなどして曖昧性を解消するようにする
#include <iostream>
#include <vector>
#include <algorithm>
#include <boost/lambda/lambda.hpp>

int main() {
  std::vector<int> v;
  v.push_back(1);
  v.push_back(2);
  v.push_back(3);

  std::for_each(v.begin(), v.end(), (std::cout<< boost::lambda::_1 << ' '));
  std::cout << std::endl;
};