erase 其中一種實現
(來源:cygnus 2.91.57,github:https://github.com/xuchanglong/Cygnus-comments)
iterator erase(iterator position)
{
if (position + 1 != end())
copy(position + 1, finish, position);
// 使得 finish 指向多餘的那個元素。
// 同時也保證了 finish 始終位於有效數據的下一位。
--finish;
// 刪除該多雨位置的內存。
destroy(finish);
return position;
}
因爲,該函數的功能主要是將 position 之後的數據覆蓋到以 position 爲開始的內存中。整個函數完事之後,傳入的指針 position 和返回的 position 是沒有改變的,所以該函數沒有網上說的執行了 erase 之後,position 之後的迭代器會失效的問題,可能和其實現有關係。
(SAW:Game Over!)