<pre name="code" class="cpp">#include <iostream>
#include <vector>
#include <deque>
#include <algorithm>
using namespace std;
int main()
{
//条款27:用distance和advance把const_iterator转化成iterator
typedef deque<int> IntDeque;
typedef IntDeque::iterator Iter;
typedef IntDeque::const_iterator constIter;
IntDeque deq;
for (int i = 0; i < 5; i++)
{
deq.push_back(i);
}
constIter ci;
ci = find(deq.begin(),deq.end(),4);
Iter i(deq.begin());
advance(i,distance<constIter>(i,ci));//distance计算两个迭代器的距离; advance移动迭代器特定的距离
cout <<*ci<<" " <<*i<<endl;
//条款28:了解如何通过reverse_iterator的base得到iterator
vector <int> vec;
for (int i = 0; i < 5; i++)
{
vec.push_back(i);
}
vector <int>::reverse_iterator ri = find(vec.rbegin(),vec.rend(),3);
vector <int>::iterator it(ri.base());
cout << *ri << " " <<*it<<endl; //ri指向3, it指向4
//对于插入,两者位置一样
vec.insert(it,99);
ri = find(vec.rbegin(),vec.rend(),3);
it = ri.base();
vec.erase((++ri).base()); //对于删除,需要移动到前一个
//vec.erase(--ri.base()); //对于删除,需要移动到前一个
copy(vec.begin(),vec.end(),ostream_iterator <int>(cout," "));
return 0;
}
effective STL 条款27 和 条款28
最新推荐文章于 2020-08-22 10:49:34 发布