我正在尝试使用remove_copy_if直接复制iterable
到stdout
通过ostream_iterator。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;
}