insert
vector<int> v;
v.reserve(
5);
for (
int i =
1; i <=
5; ++i) {
v.push_back(i);
}
vector<int>::reverse_iterator ri = find(v.rbegin(), b.rend(),
3);
vector<int>::iterator i(ri.base());
v.insert(i,
99);
erase
vector<int> v;
...
vector<int>::reverse_iterator ri = find(v.rbegin(), v.rend(),
3);
v.erase(--r.base());
This code will work with every standard container except vector and string. for many vector and string implementations , iterators are implemented as bulit-in pointers, so the result of ri.base() is a pointer. Both C and C++ dictate that pointers returned from functions shall not modified. so
...
v.erase((++r).base());