#include <iostream>
#include <string>
#include <assert.h>
template <class Chunkedseq, class UnaryPredicate>
void pcopy_if(
typename Chunkedseq::iterator first,
typename Chunkedseq::iterator last,
Chunkedseq& destination,
const UnaryPredicate& pred) {
using iterator = typename Chunkedseq::iterator;
using ptr = typename Chunkedseq::const_pointer;
const long cutoff = 8192;
long sz = last.size() - first.size();
if (sz <= cutoff) {
for (ptr p = lo; p < hi; p++) {
if (pred(v))
destination.push_back(v);
}
});
} else {
iterator mid = first + (sz/2);
Chunkedseq destination2;
pcopy_if(first, mid, destination, pred);
pcopy_if(mid, last, destination2, pred);
destination.concat(destination2);
}
}
int main(
int argc,
const char * argv[]) {
const int chunk_size = 2;
pcopy_if(mydeque.
begin(), mydeque.
end(), mydeque2, [] (
int i) {
return i%2==0; });
std::cout << "mydeque2 contains:";
auto p = mydeque2.
begin();
while (p != mydeque2.
end())
std::cout << " " << *p++;
std::cout << std::endl;
return 0;
}