看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。这就很有意思了。