algorithm としての std::move
Twitter で教えてもらったので覚書。
std::move というと rvalue reference にキャストする関数の方が有名だと思うんですが、sequence の要素を move する algorithm があります。
std::copy の move 版ですね。
使い方も std::copy を同じです。
[ソース]
#include <algorithm> #include <vector> #include <memory> #include <iostream> int main(){ std::vector<std::unique_ptr<int>> v; for(int n = 0 ; n < 5 ; ++n){ v.emplace_back(new int(n)); } std::vector<std::unique_ptr<int>> v2(v.size()); std::move(v.begin(), v.end(), v2.begin()); for(auto&& p : v2){ std::cout << *p << std::endl; } return 0; }
[出力]
0 1 2 3 4