- iterator[meta header]
- std[meta namespace]
- class template[meta id-type]
- cpp11[meta cpp]
namespace std {
template <class Iterator>
class move_iterator;
}
move_iterator
は、イテレータをラップし、間接参照時に参照先の要素をムーブするイテレータアダプタである。その他の操作は、元のイテレータそのものの動作をする。
move_iterator
クラスのテンプレートパラメータIterator
は、入力イテレータの要件を満たすこと。双方向またはランダムアクセスの横断を必要とする操作を行う場合は、それぞれ双方向イテレータまたはランダムアクセスイテレータの要件を満たすこと。
名前 |
説明 |
対応バージョン |
iterator_type |
Iterator |
C++11 |
difference_type |
iterator_traits <Iterator>::difference_type |
C++11 |
pointer |
Iterator |
C++11 |
value_type |
iterator_traits <Iterator>::value_type |
C++11 |
iterator_category |
iterator_traits <Iterator>::iterator_category |
C++11 |
reference |
value_type&& |
C++11 |
#include <iostream>
#include <vector>
#include <memory>
#include <algorithm>
#include <iterator>
int main()
{
std::vector<std::unique_ptr<int>> v;
for (int i = 0; i < 5; ++i)
v.emplace_back(new int(i));
std::vector<std::unique_ptr<int>> v2;
v2.assign(std::make_move_iterator(v.begin()),
std::make_move_iterator(v.end()));
std::for_each(v2.begin(), v2.end(),
[](const std::unique_ptr<int>& v) { std::cout << *v << std::endl; });
}
- std::make_move_iterator[color ff0000]
- v.emplace_back[link /reference/vector/vector/emplace_back.md]