我有一个名为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()
谢谢!
答案 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>