C++でrealloc()
あれ?C++でrealloc()的なことってどうやるんだっけ。placement new?
http://twitter.com/tyru/status/5978939028
用意されてない。
vectorのように勝手に縮小/増大してくれるコンテナを使えということらしい。
おそらくどうしてもmalloc()/realloc()/free()使うんだったらラッパークラスを用意するんだろう。
実はC++でちゃんとしたアプリケーションを作ったことがないので知識がかなり曖昧だったりする。
あとstd::allocatorについてとかもよく分かってない。
shrink to fitとrvalue
コンテナが要素のために確保してるサイズをきっちり現在のサイズ分だけにすることをshrink to fitとか言う。
std::vector
More C++ Idioms/縮めて合わせる(Shrink-to-fit) - Wikibooksv;
//... たくさんの push_back と、たくさんの v に対する削除
//その結果、v のサイズは小さいが、容量は大きい。
std::vector(v).swap (v);
ここに書いてあるのだとrvalueのswapメンバ関数をlvalueに対して呼び出してるけど、
これlvalueからrvalueに対してswapを呼び出せばMoveコンストラクタが働いて速くなるかも?*1とか
std::vector<int> v; v.swap(std::vector<int>(v));
std::vector
関連リンク
rvalue referenceむずい - Humanity
rvalue reference - 続き - Humanity
本の虫: rvalue reference 完全解説
本の虫: rvalue reference 補足
どうでもいい話
ブログ書いてるとコードが書けなくなる。
ついでに他のやるべきこともできなくなる。
元々してn(ry
*1:引数がrvalueなswapが用意されていれば