#include <iostream>
#include <list>
#include <vector>
#include <algorithm>
using namespace std;
template<typename T> // display an STL container
void dispSTL(const string& str, const T& x)
{
cout << str;
for(auto it = std::begin(x); it!=std::end(x); it++)
cout << *it << " ";
cout << endl;
}
// main
int main(void)
{
list<int> lst{1,2,3,4,5};
vector<int> vct{1,2,3,4,5};
cout << "std::list" << endl;
dispSTL("Initial: ", lst);
// remove the value 3 from the list
// elements after 3 are left-copied by 1 position
auto pos = remove(lst.begin(), lst.end(), 3);
dispSTL("After remove 3: ", lst);
lst.erase(pos, lst.end());
dispSTL("After list.erase: ", lst);
cout << endl << "std::vector" << endl;
dispSTL("Initial: ", vct);
// remove the value 3 from the list
// elements after 3 are left-copied by 1 position
auto pos1 = remove(vct.begin(), vct.end(), 3);
dispSTL("After remove 3: ", vct);
vct.erase(pos1, vct.end());
dispSTL("After vect.erase: ", vct);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bGlzdD4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGFsZ29yaXRobT4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiAvLyBkaXNwbGF5IGFuIFNUTCBjb250YWluZXIKdm9pZCBkaXNwU1RMKGNvbnN0IHN0cmluZyYgc3RyLCBjb25zdCBUJiB4KQp7Cgljb3V0IDw8IHN0cjsKCWZvcihhdXRvIGl0ID0gc3RkOjpiZWdpbih4KTsgaXQhPXN0ZDo6ZW5kKHgpOyBpdCsrKQoJCWNvdXQgPDwgKml0IDw8ICIgIjsKCWNvdXQgPDwgZW5kbDsKfQoKLy8gbWFpbgppbnQgbWFpbih2b2lkKQp7CglsaXN0PGludD4gbHN0ezEsMiwzLDQsNX07Cgl2ZWN0b3I8aW50PiB2Y3R7MSwyLDMsNCw1fTsKCgljb3V0IDw8ICJzdGQ6Omxpc3QiIDw8IGVuZGw7CglkaXNwU1RMKCJJbml0aWFsOiAiLCBsc3QpOwoJLy8gcmVtb3ZlIHRoZSB2YWx1ZSAzIGZyb20gdGhlIGxpc3QKCS8vIGVsZW1lbnRzIGFmdGVyIDMgYXJlIGxlZnQtY29waWVkIGJ5IDEgcG9zaXRpb24KCWF1dG8gcG9zID0gcmVtb3ZlKGxzdC5iZWdpbigpLCBsc3QuZW5kKCksIDMpOyAKIAlkaXNwU1RMKCJBZnRlciByZW1vdmUgMzogIiwgbHN0KTsKCWxzdC5lcmFzZShwb3MsIGxzdC5lbmQoKSk7CiAJZGlzcFNUTCgiQWZ0ZXIgbGlzdC5lcmFzZTogIiwgbHN0KTsKCiAJY291dCA8PCBlbmRsIDw8ICJzdGQ6OnZlY3RvciIgPDwgZW5kbDsKIAlkaXNwU1RMKCJJbml0aWFsOiAiLCB2Y3QpOwogCS8vIHJlbW92ZSB0aGUgdmFsdWUgMyBmcm9tIHRoZSBsaXN0CgkvLyBlbGVtZW50cyBhZnRlciAzIGFyZSBsZWZ0LWNvcGllZCBieSAxIHBvc2l0aW9uCiAJYXV0byBwb3MxID0gcmVtb3ZlKHZjdC5iZWdpbigpLCB2Y3QuZW5kKCksIDMpOyAKIAlkaXNwU1RMKCJBZnRlciByZW1vdmUgMzogIiwgdmN0KTsKIAl2Y3QuZXJhc2UocG9zMSwgdmN0LmVuZCgpKTsKIAlkaXNwU1RMKCJBZnRlciB2ZWN0LmVyYXNlOiAiLCB2Y3QpOwp9Cg==