C++
互いに関連付けられた複数の配列を一緒にソートしたい場合があります. // SoAの例 std::vector<int> student_ids; std::vector<std::string> names; std::vector<int> math_scores; // AoSの例 struct Student { int id; std::string name; int math_score }; 専門的には,SoA(Str</int></std::string></int>…
C++11に、Variadic templatesという機能がある。テンプレートの引数を可変長にできるというものだ。 これによって、型安全でPolymorphicな可変長引数を実現することができる。 参考資料: 本の虫: Variadic Templatesの解説 いまさらVariadic Templatesをま…
githubで開発しているプロジェクトのCIを実施したいが、C++11をサポートするコンパイラが必要だ。さらに、MPIを使ったプロジェクトではmipcxxとmpirunが必要だ。Github上のプロジェクトのCIを行ってくれるサービスはCircle CIなどもあるが、C++には対応して…
ネット上では散々既出[1][2]ですが、ソート済みのstd::vector重複要素を削除する方法。 スクリプト言語的にはsetを使いたくなるところだけど、非常に遅いらしいので実験してみた。 Compare speeds of "uniq" operation to std::vector 結果 # Intel(R) Core(…
Google Coding Style というものがあります。コーディング規約は世の中にたくさんあると思いますが、これはGoogle社が発表しているものです。このコーディング規約を採用する上でいくつか便利なツールがあります。一つは、emacs用のgoogle-c-style.elです。…
3回くらい調べてしまったのでメモ。 STLのコンテナをメンバー変数にもって、constメンバー関数を実装するときに、検索系の関数はconstがあるものと無いものを使い分けないとダメ。 言葉で書くと意味不明ですけど、要はこういうことです。 #include<map> using nam</map>…
言語処理系のGC 俺Lispのインタプリタを書いていて、stop and copyのGCを書くためにplacement newを勉強してました。 でも、試行錯誤してるうちに気づいたら使ってなかった…orz。せっかくなので、placement newについてまとめ。 詳しくはEffective C++ 第3版…