Map Iterator适用于begin()但不适用于rbegin()

时间:2014-03-29 23:07:44

标签: c++ list pointers map iterator

我有一个名为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 个答案:

答案 0 :(得分:4)

rbegin()返回reverse_iterator,而不是iterator

答案 1 :(得分:2)

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

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