C++:通用容器操作:反向容器的额外成员

看C++Primer容器库的时候,在容器库通用操作中看到了一个名词 “反向容器的额外成员” ,我想从字面意思理解的话,应该是迭代器逆向输出。但是不能靠猜是不是,所以还是测试了一下:

代码如下 :

#include<iostream>
#include<list>
#include<string>


using std::cout;
using std::cin;
using std::endl;
using std::list;
using std::string;

int main()
{
    list<string> listStr = {"123","456","789","000"};
    
    for(auto it = listStr.crbegin();it != listStr.crend();++it)
    {
        cout<<*it<<endl;
    }
    
    return 0;
}

这里结果是:

这个结果是真正的逆序输出。前面有好几种不正确的方式,输出结果也一直不对,具体就不贴错误代码了,主要还是强调一下逆序输出和想象中不太一样的地方:

首先在我看来我以为逆序输出是从crend()开始,--it直到crbegin()为止,但是结果并非如此。应该是其迭代器进行了一定程度的封装,使得其与指针不太一样。从指针的角度来看的话,肯定就是我如上所说的样子了。不过这个迭代器的话,封装之后,rbegin和crbegin变成了起始位置,同理rend和crend变成了末尾位置。特别是本来的--it也不一样了,变成了++it。这就很有意思了。

原文地址:https://www.cnblogs.com/FWFC/p/8607685.html