我试图在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)->first
在itlow->second
之前还是之后进行求值。如果之前对其进行过评估,则会得到20
;否则,您将获得60
。
参见order of evaluation of operands。
关于c++ - C++ map lower_bound(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26454352/