首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

std::move_backward

Defined in header <algorithm>

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之外时,则是适当的。

二次

代码语言:javascript
复制
#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';
}

二次

产出:

二次

代码语言:javascript
复制
src: foo bar baz 
dest:    
src:    
dest: foo bar baz

二次

另见

move (C++11)

moves a range of elements to a new location (function template)

代码语言:txt
复制
 © cppreference.com

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

扫码关注腾讯云开发者

领取腾讯云代金券