C ++ map lowerbound()

时间:2014-10-19 19:17:54

标签: c++ map iterator

我尝试在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和反向相同。 测试1的结果是我的期望,但我不明白为什么Test2打印60为第二场而不是20?

1 个答案:

答案 0 :(得分:2)

未指定在(--itlow)->first之前或之后评估itlow->second。如果以前评估过,那么你会得到20;否则,你得到60

请参阅order of evaluation of operands