在线文档教程
C++
算法 | Algorithm

std::move_backward

STD:移动[医]倒向

Defined in header
template< class BidirIt1, class BidirIt2 > BidirIt2 move_backward( BidirIt1 first, BidirIt1 last, BidirIt2 d_last (since C++11)

从范围内移动元素[first, last),到另一个范围,以d_last元素按%28的相反顺序移动,最后一个元素首先移动%29,但它们的相对顺序保持不变。

如果d_last(first, last]...STD:移动必须使用而不是std::move_backward那样的话。

参数

first, last-the range of the elements to move
d_last-end of the destination range

类型要求

-Bidirit 1,Bidirit 2必须符合双向测定仪的要求。

返回值

目标范围内的Iterator,指向最后一个移动的元素。

复杂性

一点儿没错last - first转移任务。

可能的实施

模板<类BidirIt 1,类BidirIt 2>BidirIt 2移动[医]后向%28 BidirIt 1第一次,BidirIt 1最后一次,BidirIt 2 d[医]最后%29{而%285第21=最后%29{%2A%28-d[医]最后%29=std::移动%28%2A%28--最后%29%29;}返回d[医]最后;}

*。

注记

当移动重叠范围时,std::move当移动到左侧%28时,目标范围的开头位于源范围%29之外std::move_backward当移动到目标区域的右%28端在源范围%29之外时,则是适当的。

二次

#include <algorithm> #include <vector> #include <string> #include <iostream> int main() { std::vector<std::string> src{"foo", "bar", "baz"}; std::vector<std::string> dest(src.size() std::cout << "src: "; for (const auto &s : src) { std::cout << s << ' '; } std::cout << "\ndest: "; for (const auto &s : dest) { std::cout << s << ' '; } std::cout << '\n'; std::move_backward(src.begin(), src.end(), dest.end() std::cout << "src: "; for (const auto &s : src) { std::cout << s << ' '; } std::cout << "\ndest: "; for (const auto &s : dest) { std::cout << s << ' '; } std::cout << '\n'; }

二次

产出:

二次

src: foo bar baz dest: src: dest: foo bar baz

二次

另见

move (C++11)moves a range of elements to a new location (function template)

© cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

http://en.cppreference.com/w/cpp/Algorithm/Move[医]倒向