關於 End() 的使用

關於 C++ 的STL裡面 Iterator 的 end() 函式, 有空要好好拜讀一番, 有感的是之前犯過低級錯誤 對於 end() 是指向Collection內的最後一個元素的後一位並不清楚, 還Debug 了半天才發現, 還好可以直接觀察記憶體才有深刻印象

 

STL里的end()看似是个简单得不能再简单的函数,遵从内建数组的遍历手法,end()返回“指向最后一个元素之后一位的迭代器”,从而使得使用end()的循环遍历变得更容易和直观。然而,由于end()的特殊性(即它从逻辑上和物理上都不属于指向其容器内元素的迭代器,故而无法对其解引用),从而会导致一些微妙的问题,使得看上去完全无辜的代码也会出现莫明其妙的错误。

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

%d 位部落客按了讚: