Humanity

Edit the world by your favorite way

そういえば

Google Waveの招待状来てた。昨日。
ログインしたもののよくわからない!
っていうかAMD Athlon 64 1 Ghz + Firefox + Vimperatorじゃ重くてしょうがないよ!


でもなんかwkwkする



追記:
なんかどうやら昨日か今日にかけて受け取った人が結構いるみたい。*1
Google配ってるっぽいですね。


で、そんなことはどうでもいいので誰か友達のいない僕の招待状いる人いませんか。

*1:twitterとかブコメで見かけた

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 v;
//... たくさんの push_back と、たくさんの v に対する削除
//その結果、v のサイズは小さいが、容量は大きい。
std::vector(v).swap (v);

More C++ Idioms/縮めて合わせる(Shrink-to-fit) - Wikibooks

ここに書いてあるのだとrvalueのswapメンバ関数をlvalueに対して呼び出してるけど、
これlvalueからrvalueに対してswapを呼び出せばMoveコンストラクタが働いて速くなるかも?*1とか

std::vector<int> v;
v.swap(std::vector<int>(v));

std::vector(v)はrvalueだからstd::move()使わなくてもいいはず。

どうでもいい話

ブログ書いてるとコードが書けなくなる。
ついでに他のやるべきこともできなくなる。
元々してn(ry

*1:引数がrvalueなswapが用意されていれば