简介
前面介绍了容器适配器stack、queue和函数适配器binder2nd。这篇文章主要介绍迭代器适配器reverse_iterator和inserter。
reverse_iterator
reverse_iterator主要是反转了迭代器。下图是一个简单的示意图。
我们看看rbegin()和rend()函数:
|
|
两个函数的关键是reverse_iterator类模板,然后返回的是reverse_iterator。reverse_iterator源代码如下:
|
|
reverse_iterator(begin()) 和 reverse_iterator(end())分别是使用构造函数生成了reverse_iterator对象,然后进行后面的操作.
inserter
inserter这个迭代器适配器的主要功能是把迭代器表示范围内的元素copy到目标容器中。主要代码:
|
|
下图是一组copy的操作:
copy的源代码如下:
|
|
copy把元素复制到inserter(foo,it)返回的insert_iterator中,然后每次赋值操作都会调用重载的运算符。下面看看inserter源代码:
|
|
在insert_iterator对象中包含两个成员分别是底层容器container和迭代器iter,每次赋值其实就是调用insert操作,因此需要移动迭代器iter指向刚刚创造出的空间。
声明
若有错误,欢迎讨论。严禁抄袭,仅用于学习。