泛型算法(十六)之移动语义算法

1、move(InputIterator first, InputIterator last, OutputIterator result):C11版,把输入序列中的逐个元素移动到结果序列。需要注意的是,把一个对象移动给另一个对象的std::move定义在头文件<utility>中。

    std::vector<int> c = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    std::vector<int> result;
    result.resize(10);
    //把c中元素逐个移动到result中
    std::move(c.begin(), c.end(), result.begin());
    //输出
    for (auto var : result)
    {
        std::cout << var << ",";
    }
    //打印结果:0,1,2,3,4,5,6,7,8,9,

2、move_backward(BidirectionalIterator1 first, BidirectionalIterator1 last, BidirectionalIterator2 result):C11版,把输入序列中的逐个元素自尾到头移动到结果序列。

    std::vector<int> c = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    std::vector<int> result;
    result.resize(10);
    //把序列c中的逐个元素自尾到头移动到序列result
    std::move_backward(c.begin(), c.end(), result.end());
    //输出
    for (auto var : result)
    {
        std::cout << var << ",";
    }
    //打印结果:0,1,2,3,4,5,6,7,8,9,
原文地址:https://www.cnblogs.com/dongerlei/p/5144961.html