「std::copy backward」の版間の差分
提供: C++入門
(ページの作成:「std::copy_backward とは、C++で指定範囲をコピーするアルゴリズムです。std::vectorをコピーするときなどに使われます。[[s...」) |
(相違点なし)
|
2014年1月3日 (金) 14:35時点における最新版
std::copy_backward とは、C++で指定範囲をコピーするアルゴリズムです。std::vectorをコピーするときなどに使われます。std::copyとは違い、第3引数にコピー先の最後を指定し、第3引数の位置から第2引数で指定した範囲から第1引数に向かってコピーします。つまり、後ろ向きにコピーされていきます。
読み方
- std::copy_backward
- えすてぃーでぃー こぴー ばっくわーど
目次
概要
std::copyでは、コピー元と同じ順番で、コピー先に並べます。コピー元と逆向きに並べる場合には、std::reverse_copyを使用します。 std::copy_backwardは、コピー先の終端からコピー元の最後からコピーしていきます。前方からコピーするのと結果が変わる場合に、用います。
endからfirstまでをresultの位置を最後の位置としてコピーします。
std::copy_backward(first, end, result);
以下の関数テンプレートと同じような振る舞いをします。
template<class BidirectionalIterator1, class BidirectionalIterator2> BidirectionalIterator2 copy_backward ( BidirectionalIterator1 first, BidirectionalIterator1 last, BidirectionalIterator2 result ) { while (last!=first) { *(--result) = *(--last); } return result; }
後ろから前方に向かって、コピーします。 resultの位置から前方に向かって、コピーされます。
vector_copy_backward1.cpp の例
ソースコード vector_copy_backward1.cpp
#include <iostream> #include <vector> #include <algorithm> // std::copy_backward using namespace std; int main(int argc, char const* argv[]) { vector<int> v1,v2; // 0,1,2,3,4 // ^ ^ for(int i = 0;i<5;i++) { v1.push_back(i); } copy_backward(v1.begin(), v1.end() - 1, v1.end() ); for(auto i:v1) { cout << i << " "; } cout << endl; return 0; }
コンパイル
g++49 -std=c++11 -I/usr/local/lib/gcc49/include/c++/ \ -Wl,-rpath=/usr/local/lib/gcc49 vector_copy_backward1.cpp -o vector_copy_backward1
実行例
% ./vector_copy_backward1 0 0 1 2 3
関連項目
- std::vector::insert: vector同士を連結する
- std::copy_backward
- std::reverse_copy
- std::copy
- std::swap
- std::vectorをコピーする
- std::vector