std::make_move_iterator
来自cppreference.com
该页由英文版wiki使用Google Translate机器翻译而来。
该翻译可能存在错误或用词不当。鼠标停留在文本上可以看到原版本。你可以帮助我们修正错误或改进翻译。参见说明请点击这里. |
在头文件 <iterator> 中定义
|
||
template< class Iterator > std::move_iterator<Iterator> make_move_iterator( const Iterator& i ); |
(C++11 起) | |
make_move_iterator
是一个方便的函数模板,构建了一个std::move_iterator的类型推导出的参数类型给定的迭代器i
.原文:
make_move_iterator
is a convenience function template that constructs a std::move_iterator for the given iterator i
with the type deduced from the type of the argument.目录 |
[编辑] 参数
i | - | 输入迭代器转换为移动迭代器
原文: input iterator to be converted to move iterator |
[编辑] 返回值
一个std::move_iterator,可用于移动
i
访问的元素原文:
A std::move_iterator which can be used to move from the elements accessed through
i
[编辑] 可能的实现
template< class Iterator > std::move_iterator<Container> make_move_iterator( const Iterator& i) { return std::move_iterator<Iterator>(i); } |
[编辑] 示例
#include <iostream> #include <list> #include <vector> #include <string> #include <iterator> int main() { std::list<std::string> s{"one", "two", "three"}; std::vector<std::string> v1(s.begin(), s.end()); // copy std::vector<std::string> v2(std::make_move_iterator(s.begin()), std::make_move_iterator(s.end())); // move std::cout << "v1 now holds: "; for(auto str : v1) std::cout << "\"" << str << "\" "; std::cout << "\nv2 now holds: "; for(auto str : v2) std::cout << "\"" << str << "\" "; std::cout << "\noriginal list now holds: "; for(auto str : s) std::cout << "\"" << str << "\" "; std::cout << '\n'; }
输出:
v1 now holds: "one" "two" "three" v2 now holds: "one" "two" "three" original list now holds: "" "" ""
[编辑] 另请参阅
(C++11) |
迭代器适配器,它解引用一个右值引用 原文: iterator adaptor which dereferences to an rvalue reference (类模板) |
(C++11) |
获得一个右值引用 (函数模板) |