remove_copy()は指定した値を取り除きながらコピーするアルゴリズムで、replace_copy()は置換しながらコピーするアルゴリズム。
_ifが付いたアルゴリズムはcount_if()と同様に条件を判定する関数を指定して処理を行うもの。
コピー先にはあらかじめコピーできる十分なサイズを確保しておく必要がある。
remove_copy_if()とreplace_copy()を使ったプログラムは次の通り。
#include <iostream> #include <vector> #include <algorithm> using namespace std; // 10000超えてるなら真を返す関数 bool isover(int n) { return (n>10000) ? true : false; } int main() { vector<int> v, v2(10), v3(10); // 整数をランダムに10個 for(int i=0; i<10; i++) v.push_back(rand()); for(int i=0; i<v.size(); i++) cout << v[i] << " "; cout << endl; // 10000を超えているものを取り除いてコピー remove_copy_if(v.begin(), v.end(), v2.begin(), isover); for(int i=0; i<v2.size(); i++) cout << v2[i] << " "; cout << endl; // 0を999に置換しながらコピー replace_copy(v2.begin(), v2.end(), v3.begin(), 0, 999); for(int i=0; i<v3.size(); i++) cout << v3[i] << " "; } 実行結果 41 18467 6334 26500 19169 15724 11478 29358 26962 24464 41 6334 0 0 0 0 0 0 0 0 41 6334 999 999 999 999 999 999 999 999