在c ++中选择有序映射的最后一个条目时哪个更好

时间:2016-03-12 06:27:55

标签: c++ ordered-map

  1. auto& myKey = myMap.rbegin()->first;
  2. auto& myKey = std::prev(myMap.end())->first;
  3. myMap是一个常量有序的地图。 这两种方法都具有不变的复杂性。 rbegin()使用反向迭代器,而std::prev使用反向迭代器。他们之间的任何效率差异?

1 个答案:

答案 0 :(得分:2)

rbegin()的典型实现:

reverse_iterator rbegin()
{
    return reverse_iterator(end());
}

这与执行std::prev(myMap.end())基本相同。所以,从理论上讲,它们是完全相同的。但是,reverse_iterator往往对编译器优化器有点困难。如果您非常在意,我建议您在编译器中跟踪实际的发布模式程序集(或生成程序集输出),看看是否存在差异。