Map迭代器在begin()上运行,但不适用于rbegin()

3

我有一个名为Order的类。由于某些原因,使用rbegin()时以下代码无法编译,但对于begin(),它可以正常工作。我声明迭代器的方式有问题,或者我的指针引用存在问题吗?

map<double, list<Order*>> m
typedef map<double, list<Order*>>::iterator iter;
iter iterator;

iterator = m.rbegin(); // this only works for m.begin()

谢谢你!

2个回答

4

rbegin() 返回的是一个 reverse_iterator,而不是一个 iterator


1
确实。如果使用C++11,您可以尝试auto it = m.rbegin(); - Neil Kirk

2

begin()rbegin() 返回的类型是不同的:

  • begin() 返回 std::map<K, V>::iterator
  • rbegin() 返回 std::reverse_iterator<std::map<K, V>::iterator>

有趣。我不知道。谢谢! - ch-pub

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接