remove_copy_ifを使用して、 ostream_iteratorを介してiterable
直接コピーしようとしています。が出力範囲の終わりまでであることを保証します。この戻り値は、出力イテレーターの開始と戻りイテレーターの間の距離を調べることにより、宛先にコピーされた要素の数を判別する方法で役立ちます。これは、コンテナを使用する場合には意味がありますが、同じ機能を使用して、宛先にコピーされる要素の数を決定する方法です。stdout
remove_copy_if
return value
iterator
ostream_iterator
次の例は、私が達成したいと思うかもしれないことをより理解するはずです
#include<vector>
#include<iterator>
#include<algorithm>
#include<functional>
#include<iostream>
#include <time.h>
using namespace std;
int main() {
int rawdata[] = {1,2,3,4,5,6,7,8,9,10,11};
vector<int> data(20);
vector<int>::iterator curr = remove_copy_if(rawdata,rawdata + sizeof(rawdata)/sizeof(rawdata[0]),data.begin(),bind2nd(greater<int>(),10));
wcout<<L"No of data copied = "<<curr - data.begin()<<endl;
for(int i=0;i<10;i++) {
int some_value = rand()%20 + 1;
ostream_iterator<int> curr = remove_copy_if(data.begin(),data.end(),ostream_iterator<int>(cout),bind2nd(less<int>(),some_value));
//if (curr - what???? > 0)
cout<<endl;
}
return 0;
}