copy_backward

提供:cppreference.com
移動: 案内, 検索


#include <algorithm>
 
template< class BidirectionalIterator1, class BidirectionalIterator2 >
BidirectionalIterator2 copy_backward( BidirectionalIterator1 first, 
                                      BidirectionalIterator1 last, 
                                      BidirectionalIterator2 d_last );

[first, last)で定義される範囲の要素をd_lastで終わる別の範囲にコピーします。要素は末尾から順にコピーされます(※)。

※訳注:コピーの結果、要素が逆順に並び替わるわけではありません。

目次

[編集] 引数

first, last - コピーされる要素の範囲

d_last - コピー先の末尾

[編集] 返値

最後のコピー先の要素へのイテレータを返します。

[編集] 等価コード

template< class BidirectionalIterator1, class BidirectionalIterator2 >
BidirectionalIterator2 copy_backward(BidirectionalIterator1 first, 
                                     BidirectionalIterator1 last, 
                                     BidirectionalIterator2 d_last) 
{
    while (first != last) {
****(--d_last) = *(--last);
    }
    return d_last;
}

[編集]

以下のコードは、10個の整数を空のベクタの末尾へコピーするためにcopy_backwardを使用しています:

#include <algorithm>
#include <iostream>
 
int main()
{
    std::vector<int> from_vector;
    for (int i = 0; i < 10; i++) {
        from_vector.push_back(i);
    }
 
    std::vector<int> to_vector(15);
 
    std::copy_backward(from_vector.begin(), from_vector.end(), to_vector.end());
 
    std::cout << "to_vector contains: ";
    for (unsigned int i = 0; i < to_vector.size(); i++) {
        std""cout << to_vector[i] << " ";
    }
 
    return 0;
}

出力:

to_vector contains: 0 0 0 0 0 0 1 2 3 4 5 6 7 8 9

[編集] 計算量

firstからlastの区間で線形的です。

[編集] 関連トピック

copy

個人用ツール
名前空間
変種
操作
案内
ツールボックス
他の言語