vector<int> vector1;
for (size_t i = 1; i < 8; i++)
{
vector1.push_back( i*2 );
}
vector<int>::reverse_iterator rit = find(vector1.rbegin(), vector1.rend(), 8);
vector<int>::iterator it(rit.base());
cout << *rit << endl;
cout << *it << endl;
结果 *rit 为8, *it 为10
为什么将反向迭代器转换成普通迭代器,两个迭代器指向的并不是相同的元素?
vector1 中的数为 2,4,6,8,10,12,14; 为了满足迭代器范围关系:左闭合区间 【);
即【vector1.rbegin(), rit) 和【rit.base(), vector1.begin())指向 vector 中相同的范围,所以,rit 和it 生成相邻位置而不是相同位置。crbegin() 和cend()也是如此。