copy_if
#include <algorithm>
#include <iostream>
#include <vector>
using std::vector,
std::copy_if,
std::cerr;
class Temp{
public:
int a, b;
Temp(int i, int j):a(i), b(j){}
};
bool operator==(const Temp& l, const Temp& r)
{
return l.a == r.a && l.b == r.b;
}
typedef vector<Temp> my_vector;
int main(){
my_vector a = {Temp(0, 0), Temp(1, 1), Temp(2, 4), Temp(3, 9), Temp(3, 9), Temp(4, 16), Temp(5, 25), Temp(6, 36), Temp(7, 49), Temp(8, 64), Temp(9, 81), Temp(10, 100), Temp(11, 121), Temp(12, 144), Temp(13, 169), Temp(14, 196), Temp(15, 225), Temp(16, 256), Temp(17, 289), Temp(18, 324), Temp(19, 361)};
my_vector b = {Temp(2, 4), Temp(3, 9), Temp(4, 16)};
auto print = [] (Temp t){
cerr << "Temp(" << t.a << ", " << t.b << ")\n";
};
my_vector::iterator start = a.begin();
my_vector::iterator finish = a.begin();
advance(start, 3);
advance(finish, 10);
my_vector::iterator pos = b.begin();
advance(pos, 1);
cerr << "b before copy:\n";
for_each(b.begin(), b.end(), print);
auto test = [](Temp a)->bool{
if(a.a > 4 && a.a < 10){
return true;
}
return false;
};
copy_if(start, finish, pos, test);
cerr << "b after copy:\n";
for_each(b.begin(), b.end(), print);
return 0;
}
C++ Examples© 2024 TBD