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が用意されていれば