reverse_iterator::base 显示另外 15 个 此类模板是迭代器适配器,描述在行为上与随机访问迭代器或双向迭代器类似(只不过方向相反)的反向迭代器对象。 它允许向后遍历范围。语法C++ 复制 template <class RandomIterator> class reverse_iterator 参数RandomIterator 一种类型,此类型表示要进行适配化以反向操作的迭代...
在这 样的实现下,iterator(和const_iterator)会采用内建的指针来实现,所以ri.base()的结果是一个指针。C和C++都规定了 不能直接修改函数返回的指针,所以在string和vector的迭代器是指针的STL平台上,像--ri.base()这样的表达式无法通过编译。要移 植从一个由reverse_iterator指出的位置删除元素时,你应该尽量避免...
在这样的实现下,iterator(和const_iterator)会采用内建的指针来实现,所以ri.base()的结果是一个指针。C和C++都规定了不能直接修改函数返回的指针,所以在string和vector的迭代器是指针的STL平台上,像--ri.base()这样的表达式无法通过编译。要移植从一个由reverse_iterator指出的位置删除元素时,你应该尽量避免修改base...
要实现在一个 reverse_iterator ri 指出的位置上插入新元素,在 ri.base() 指向的位置插入就行了。对于 insert 操作而言,ri 和 ri.base() 是等价的,而且 ri.base() 真的是 ri 真的是 ri 对应的iterator 1vector<int>::iterator i( ri.base() );// i和ri.base()一样 要实现在一个 reverse_iterator...
// reverse_iterator::base example#include <iostream>// std::cout#include <iterator>// std::reverse_iterator#include <vector>// std::vectorintmain () { std::vector<int> myvector;for(inti=0; i<10; i++) myvector.push_back(i);typedefstd::vector<int>::iterator iter_type; std::rever...
调用reverse_iterator的base成员函数可以产生“对应的”iterator,但这句话有些辞不达意。举个例子,看一下这段代码,我们首先把从数字1-5放进一个vector中,然后产生一个指向3的reverse_iterator,并且通过 reverse_iterator的base初始化一个iterator: vector<int>v; ...
我确实看到了拥有这个&*rit == &*(rit.base() - 1)的好处,因为这样我就可以对任何反向迭代器rit使用rit.base(),并且我将始终得到一个有效的迭代器。 但同时 I不能取消引用v.rbegin().base();我必须记住先减去1,*(v.rbegin().base() - 1), ...
底层迭代器指代(相对于 iterator_type 的)reverse_iterator 当前所指元素的下一个元素。即 &*(*this.base() - 1) == &*(*this)。 示例运行此代码 #include <iostream> #include <iterator> #include <vector> int main() { std::vector<int> v = {0, 1, 2, 3, 4, 5}; using RevIt = std:...
调用reverse_iterator的base成员函数可以产生“对应的”iterator,但这句话有些辞不达意。举个例子,看一下这段代码,我们首先把从数字1-5放进一个vector中,然后产生一个指向3的reverse_iterator,并且通过 reverse_iterator的base初始化一个iterator: vector v; ...
// reverse_iterator_base.cpp // compile with: /EHsc #include <iterator> #include <algorithm> #include <vector> #include <iostream> int main( ) { using namespace std; int i; vector<int> vec; for ( i = 1 ; i < 6 ; ++i ) { vec.push_back ( 2 * i ); } vector <int>::...