日記

内容の正しさは保証しません

2019-01-01から1年間の記事一覧

ノート 12月

std::moveとstd::forward 関数テンプレートでは, 引数がT&&のときにX&&およびX&を与えることができる このとき, TはX&と推論され, &&は無視して結局X&となる そのせいでT&&(rvalue reference)特有の処理がそのままではできなくなる std::moveはT&をT&&にstat…

ノート 8/10

最近Javascriptに興味があってPixi,jsを使ってみた。初めて使う言語なので書き方がおかしいかも 基本的なコード PixiJS API Documentation JSONで読み込む スプライトシートを扱いたいときに必要 const app = new PIXI.Application(); document.body.appendC…

ノート 7/24

std::transformは処理を適用・結果を格納するコンテナの範囲をイテレータとして受け取る関数だが、一々 std::vector<int> w(v.size()); std::transform(v.begin(), v.end(), w.begin(), w.end(), f); と書くのが面倒な上、二行も使う。 そこで、コンテナvの参照と</int>…

ノート 6/16

最近勉強できてなくてstd::vectorで詰まったので覚えたことを書く。std::vectorを使うための条件 1 Tのコピーコンストラクタが定義されていて外部から呼び出し可能である 2 Tに代入演算子が定義され利用可能 3 Tのデストラクタが外部から呼び出し可能コピー…

ノート 06/24

辞書式の並べ方にする方法 std::tupleを使う。正確にはstd::tupleの大小比較演算子を利用する。タプルの比較は最初の要素から比較し、等しい場合はまた次の要素から比較を始める。 例: make_tuple(1, 2, 3) 最初の要素を比較すると1==1なので次の要素に移る…

ノート 3/15

以前からやりたかったことは、json11に(key, var)の組のリストを与えて一括で変数varにアイテム名keyの値を代入することだった。これは前回のapply関数で実現できる。 次に、項目名keyの値を関数fで変換した後varに代入したくなった。 template <class T> void bind(T</class>…

ノート 2/17

最近再びC++を書くようになった。元々そんなに書いていないが、リハビリ中。 #include <tuple> #include <functional> template <class Tuple, class F> void g(Tuple&& tuple, F&& f) { std::apply([](auto&& ...args) { (f(args), ...); }, tuple); } tupleに対してf(x_0), f(x_1), ..., f(x_n-1)が</class></functional></tuple>…