std::move_iterator
来自cppreference.com
![]() |
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
Defined in header <iterator>
|
||
template <class Iterator> class move_iterator |
(C++11 起) | |
std::move_iterator
是一个迭代器适配器,它的行为完全一样的底层迭代器(必须至少有一个InputIterator
),除了间接引用的底层迭代器的返回值到右值转换。如果这个迭代器被用作一个输入迭代器,效果的值被移动,而不是复制从.Original:
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.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
目录 |
[编辑] 会员类型
会员类型
Original: Member type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
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&&
|
[编辑] 成员函数
构造了一个新的迭代器适配器 Original: constructs a new iterator adaptor The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (公共成员函数) | |
分配给另一个迭代器 Original: assigns another iterator The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (公共成员函数) | |
访问底层迭代器 Original: accesses the underlying iterator The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (公共成员函数) | |
访问指向的元素 Original: accesses the pointed-to element The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (公共成员函数) | |
获得右值引用索引元素 Original: obtains rvalue reference to indexed element The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (公共成员函数) | |
贷款或递减的迭代器 Original: advances or decrements the iterator The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (公共成员函数) |
[编辑] 非成员函数
比较底层的迭代器 Original: compares the underlying iterators The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (函数模板) | |
进步的迭代器 Original: advances the iterator The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (函数模板) | |
计算两个迭代器的适配器之间的距离 Original: computes the distance between two iterator adaptors The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (函数模板) |
[编辑] 为例
#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'; }
Output:
Old contents of the vector: "this" "is" "an" "example" Concatenated as string: thisisanexample New contents of the vector: "" "" "" ""
[编辑] 另请参阅
(C++11) |
创建一个std::move_iterator从参数的类型推断 Original: creates a std::move_iterator of type inferred from the argument The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (函数模板) |