【问题标题】:Map Iterator working for begin() but not for rbegin()Map Iterator 适用于 begin() 但不适用于 rbegin()
【发布时间】:2014-05-09 09:45:18
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: c++ list pointers map iterator


    【解决方案1】:

    rbegin() 返回 reverse_iterator,而不是 iterator

    【讨论】:

    • 确实如此。如果使用 C++11,可以试试auto it = m.rbegin();
    【解决方案2】:

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

    • begin() 返回std::map&lt;K, V&gt;::iterator
    • rbegin() 返回std::reverse_iterator&lt;std::map&lt;K, V&gt;::iterator&gt;

    【讨论】:

    • 有趣。我不知道。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    • 2020-11-23
    • 2018-09-08
    • 2020-06-26
    • 2012-08-01
    相关资源
    最近更新 更多