当前位置:  开发笔记 > 编程语言 > 正文

如何使用reverse_iterator插入

如何解决《如何使用reverse_iterator插入》经验,为你挑选了2个好方法。

我想在C++中将一些东西插入到STL列表中,但我只有一个反向迭代器.通常的方法是什么?

这有效:(当然可以)

std::list l;
std::list::iterator forward = l.begin();
l.insert(forward, 5);

这不起作用:(我该怎么办?)

std::list l;
std::list::reverse_iterator reverse = l.rbegin();
l.insert(reverse, 10);

Johannes Sch.. 26

l.insert(reverse.base(), 10);在给定"反向"迭代器的定义时,将在末尾插入"10".实际上,l.rbegin().base() == l.end().



1> Johannes Sch..:

l.insert(reverse.base(), 10);在给定"反向"迭代器的定义时,将在末尾插入"10".实际上,l.rbegin().base() == l.end().



2> Mike Kale..:

基本上,你没有.见TCPPPL中的19.2.5.

reverse_iterator有一个名为base()的成员,它将返回一个"常规"迭代器.因此,以下代码适用于您的示例:

l.insert(reverse.base(),10);

但要小心,因为base()方法在原始的reverse_iterator指向之后返回一个元素.(这使得指向rbegin()和rend()的reverse_iterators正常工作.)

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有