std::move_iterator
来自cppreference.com
|
|
该页由英文版wiki使用Google Translate机器翻译而来。
该翻译可能存在错误或用词不当。鼠标停留在文本上可以看到原版本。你可以帮助我们修正错误或改进翻译。参见说明请点击这里. |
| 在头文件 <iterator> 中定义
|
||
| template <class Iterator> class move_iterator |
(C++11 起) | |
std::move_iterator是一个迭代器适配器,它的行为完全一样的底层迭代器(必须至少有一个InputIterator),除了间接引用的底层迭代器的返回值到右值转换。如果这个迭代器被用作一个输入迭代器,效果的值被移动,而不是复制从.原文:
std::move_iterator is an iterator adaptor which behaves exactly like the underlying iterator (which must be at least an InputIterator), except that dereferencing converts the value returned by the underlying iterator into an rvalue. If this iterator is used as an input iterator, the effect is that the values are moved from, rather than copied from.目录 |
[编辑] 会员类型
| 会员类型
|
Definition |
iterator_type
|
Iterator
|
difference_type
|
std::iterator_traits<Iterator>::difference_type |
pointer
|
Iterator
|
value_type
|
std::iterator_traits<Iterator>::value_type |
iterator_category
|
std::iterator_traits<Iterator>::iterator_category |
reference
|
value_type&&
|
[编辑] 成员函数
| 构造了一个新的迭代器适配器 (公共成员函数) | |
| 分配给另一个迭代器 (公共成员函数) | |
| 访问底层迭代器 (公共成员函数) | |
| 访问指向的元素 (公共成员函数) | |
| 获得右值引用索引元素 原文: obtains rvalue reference to indexed element (公共成员函数) | |
| 贷款或递减的迭代器 原文: advances or decrements the iterator (公共成员函数) | |
[编辑] 非成员函数
| 比较底层的迭代器 (函数模板) | |
| 进步的迭代器 (函数模板) | |
| 计算两个迭代器的适配器之间的距离 原文: computes the distance between two iterator adaptors (函数模板) | |
[编辑] 示例
#include <iostream> #include <algorithm> #include <vector> #include <iterator> #include <numeric> int main() { std::vector<std::string> v{"this", "is", "an", "example"}; std::cout << "Old contents of the vector: "; for(auto& s : v) std::cout << '"' << s << "\" "; typedef std::vector<std::string>::iterator iter_t; std::string concat = std::accumulate( std::move_iterator<iter_t>(v.begin()), std::move_iterator<iter_t>(v.end()), std::string()); // Can be simplified with std::make_move_iterator std::cout << "\nConcatenated as string: " << concat << '\n' << "New contents of the vector: "; for(auto& s : v) std::cout << '"' << s << "\" "; std::cout << '\n'; }
输出:
Old contents of the vector: "this" "is" "an" "example" Concatenated as string: thisisanexample New contents of the vector: "" "" "" ""
[编辑] 另请参阅
| (C++11) |
创建一个std::move_iterator从参数的类型推断 原文: creates a std::move_iterator of type inferred from the argument (函数模板) |