描述:
移动容器元素到另一容器中。
定义:
template< class T >
typename std::remove_reference<T>::type&& move( T&& t ) noexcept;
template< class T >
constexpr std::remove_reference_t<T>&& move( T&& t ) noexcept;
template< class InputIt, class OutputIt >
OutputIt move( InputIt first, InputIt last, OutputIt d_first );
template< class InputIt, class OutputIt >
constexpr OutputIt move( InputIt first, InputIt last, OutputIt d_first );
可能的实现:
template<class InputIt, class OutputIt>
OutputIt move(InputIt first, InputIt last, OutputIt d_first)
{
while (first != last) {
*d_first++ = std::move(*first++);
}
return d_first;
}
参数:
t - 要被移动的对象
first, last - 要移动的元素范围
d_first - 目标范围起始。
返回值:
类型一返回该元素的右值引用
类型二返回最后移动元素后一位置的迭代器
示例:
#include <iostream>
#include <utility>
#include <string>
#include <vector>
int main()
{
std::string str = "hello";
std::vector<std::string> vec;
vec.push_back(std::move(str));
std::cout << str << std::endl;
//
for (int i = 0; i < vec.size(); i++)
{
std::cout << vec[i] << " ";
}
std::cout << std::endl;
//hello
}
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
int main()
{
std::string str1 = "hello";
std::string str2;
std::move(str1.begin(),str1.end(),std::back_inserter(str2));
std::cout << str1 << std::endl;
//hello
std::cout << str2 << std::endl;
//hello
}