1. 程式人生 > >C++ 容器end的困惑

C++ 容器end的困惑

已知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並不是指向最後一個元素,而是指向最後一個元素的下一個元素。
這裡寫圖片描述
置此
困惑解開了!