#include <iostream>
#include <vector>
#include <algorithm>
#include <initializer_list>
using std::cout;
using std::endl;
template<class T, T empty_one>
struct vector : public std::vector<T>{
typedef typename std::vector<T>::iterator iterator;
typedef typename std::vector<T>::const_iterator const_iterator;
vector(std::initializer_list<T> il) : std::vector<T>(il){}
iterator erase(const T &item){
for(auto &it : *this)
if(it == item)
it = empty_one;
}
};
int main(){
vector<char, '-'> v = { 'a', 'b', 'c', 'd', 'e', 'f', 'g' };
for(auto item : v)
cout << item;
cout << endl;
v.erase('d');
for(auto item : v)
cout << item;
cout << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlzdD4KCnVzaW5nIHN0ZDo6Y291dDsKdXNpbmcgc3RkOjplbmRsOwoKdGVtcGxhdGU8Y2xhc3MgVCwgVCBlbXB0eV9vbmU+CnN0cnVjdCB2ZWN0b3IgOiBwdWJsaWMgc3RkOjp2ZWN0b3I8VD57Cgl0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6dmVjdG9yPFQ+OjppdGVyYXRvciBpdGVyYXRvcjsKCXR5cGVkZWYgdHlwZW5hbWUgc3RkOjp2ZWN0b3I8VD46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwoJCgl2ZWN0b3Ioc3RkOjppbml0aWFsaXplcl9saXN0PFQ+IGlsKSA6IHN0ZDo6dmVjdG9yPFQ+KGlsKXt9CgkKCWl0ZXJhdG9yIGVyYXNlKGNvbnN0IFQgJml0ZW0pewoJCWZvcihhdXRvICZpdCA6ICp0aGlzKQoJCQlpZihpdCA9PSBpdGVtKSAKCQkJCWl0ID0gZW1wdHlfb25lOwoJfQp9OwoKaW50IG1haW4oKXsKCXZlY3RvcjxjaGFyLCAnLSc+IHYgPSB7ICdhJywgJ2InLCAnYycsICdkJywgJ2UnLCAnZicsICdnJyB9OwoJCglmb3IoYXV0byBpdGVtIDogdikgCgkJY291dCA8PCBpdGVtOyAKCWNvdXQgPDwgZW5kbDsKCQoJdi5lcmFzZSgnZCcpOwoJCglmb3IoYXV0byBpdGVtIDogdikgCgkJY291dCA8PCBpdGVtOyAKCWNvdXQgPDwgZW5kbDsKCXJldHVybiAwOwp9Cg==