我試過在C++ STL Map中使用lowerbound()。在我使用它,我通過程序像下面測試其功能:C++ 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會打印第二個字段而不是20個字段?
測試2有未定義的行爲。 – chris 2014-10-19 19:21:22
請問你能具體嗎?謝謝! – diane 2014-10-19 19:22:57
[見這裏](http://stackoverflow.com/questions/949433/why-are-these-constructs-undefined-behavior)許多這樣的例子。還有[this](http://stackoverflow.com/questions/4176328/undefined-behavior-and-sequence-points?rq=1)。 – chris 2014-10-19 19:23:52