C++ 容器end的困惑
阿新 • • 發佈:2018-11-14
已知begin指向第一個元素,那麼end就是指向最後一個元素?如果是,當那麼來看以下程式碼,當list裡只有一個元素時,會輸出列印嗎?
list<update_t>::iterator it=gUpdateList.begin();
for(it=gUpdateList.begin();it!=gUpdateList.end();it++)
{
printf("---------%d",++count);
}
已知for語句的執行流程是
一般形式
for (語句1; 語句2; 語句3)
for(int i=0; i<7; i++)
{
}
先i = 0
如果i<7
執行括號內容
執行完後
i 又加 1
一旦i>=7就跳出了。
再來看
list<update_t>::iterator it=gUpdateList.begin();
for(it=gUpdateList.begin();it!=gUpdateList.end();it++)
{
printf("---------%d",++count);
}
當只有1個元素時,如果按前面說的end指向的是最後一個元素,那麼begin == end , for迴圈裡的條件語句,it!=gUpdateList.end() 條件一開始就不成立,那麼printf就不會執行,那麼事實是這樣嗎?
結果是
———1
都怪自己C++基礎不紮實,於是我好好回去看了看資料。
原來end並不是指向最後一個元素,而是指向最後一個元素的下一個元素。
置此
困惑解開了!