Effective STL 28 How to use a reverse

xiaoxiao2021-02-28  106

insert

vector<int> v; v.reserve(5); // 1 2 3 4 5 for (int i = 1; i <= 5; ++i) { v.push_back(i); } // 1 2 3(ri) 4(i) 5 vector<int>::reverse_iterator ri = find(v.rbegin(), b.rend(), 3); vector<int>::iterator i(ri.base()); // 1 2 3 99 4 5 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());
转载请注明原文地址: https://www.6miu.com/read-67659.html

最新回复(0)