我尝试在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?
答案 0 :(得分:2)
未指定在(--itlow)->first
之前或之后评估itlow->second
。如果以前评估过,那么你会得到20
;否则,你得到60
。