我试图在C++ STL Map中使用Lowerbound()。在使用它之前,我通过如下程序测试其功能:

int main ()
{
  std::map<int,int> mymap;
  std::map<int,int>::iterator itlow;

  mymap[1]=20;
  mymap[3]=60;
  mymap[4]=80;
  mymap[5]=100;

  itlow=mymap.lower_bound (2);

    //Test1
    std::cout<<(--itlow)->first<<'\n';  //print 1
    std::cout<<itlow->second<<'\n';   //print 20

    //Test2
    std::cout<<(--itlow)->first<<": "<<itlow->second<<'\n';  //print 1 : 60
}

我分别测试了1和2,这意味着当我测试1时,我评论了Test2,并且与reverse相同。
测试1的结果符合我的预期,但是我不明白为什么Test2在第二个字段中显示60而不是20?

最佳答案

不确定(--itlow)->firstitlow->second之前还是之后进行求值。如果之前对其进行过评估,则会得到20;否则,您将获得60

参见order of evaluation of operands

关于c++ - C++ map lower_bound(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26454352/

10-11 22:28
查看更多