#include <algorithm>
#include <iterator>
#include <iostream>
#include <memory>
using namespace std;
int main() {
std::vector<std::unique_ptr<int>> source, target;
source.emplace_back(new int(1));
source.emplace_back(new int(2));
source.emplace_back(new int(3));
source.emplace_back(new int(4));
source.emplace_back(new int(5));
// your code goes here
for(auto const& i : source) {
std::cout << *i << ",";
}
std::cout << endl;
auto it = std::stable_partition(begin(source),end(source),[](std::unique_ptr<int> const& val) {
return *val < 3; // only copy values >= 3
});
std::move(it,end(source),std::back_inserter(target));
source.erase(it,end(source));
std::cout << "after" << endl;
for(auto const& i : target) {
std::cout << *i << ",";
}
return 0;
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGl0ZXJhdG9yPgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxtZW1vcnk+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CglzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gc291cmNlLCB0YXJnZXQ7Cglzb3VyY2UuZW1wbGFjZV9iYWNrKG5ldyBpbnQoMSkpOwoJc291cmNlLmVtcGxhY2VfYmFjayhuZXcgaW50KDIpKTsKCXNvdXJjZS5lbXBsYWNlX2JhY2sobmV3IGludCgzKSk7Cglzb3VyY2UuZW1wbGFjZV9iYWNrKG5ldyBpbnQoNCkpOwoJc291cmNlLmVtcGxhY2VfYmFjayhuZXcgaW50KDUpKTsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCQoJZm9yKGF1dG8gY29uc3QmIGkgOiBzb3VyY2UpIHsKCQlzdGQ6OmNvdXQgPDwgKmkgPDwgIiwiOwoJfQoJc3RkOjpjb3V0IDw8IGVuZGw7CgkKCWF1dG8gaXQgPSBzdGQ6OnN0YWJsZV9wYXJ0aXRpb24oYmVnaW4oc291cmNlKSxlbmQoc291cmNlKSxbXShzdGQ6OnVuaXF1ZV9wdHI8aW50PiBjb25zdCYgdmFsKSB7CgkJcmV0dXJuICp2YWwgPCAzOyAvLyBvbmx5IGNvcHkgdmFsdWVzID49IDMKCX0pOwoJc3RkOjptb3ZlKGl0LGVuZChzb3VyY2UpLHN0ZDo6YmFja19pbnNlcnRlcih0YXJnZXQpKTsKCXNvdXJjZS5lcmFzZShpdCxlbmQoc291cmNlKSk7CgoJCglzdGQ6OmNvdXQgPDwgImFmdGVyIiA8PCBlbmRsOwoJCglmb3IoYXV0byBjb25zdCYgaSA6IHRhcmdldCkgewoJCXN0ZDo6Y291dCA8PCAqaSA8PCAiLCI7Cgl9CgkKCXJldHVybiAwOwp9