1. 程式人生 > >坑 - stl之刪除元素

坑 - stl之刪除元素

iterator ima rst 技術分享 gpo 返回值 const span 返回

  • 概述

stl中刪除元素,會使用到erase或remove,erase一般用於刪除一個或者一段範圍內的元素,而remove則可以刪除指定值的所有元素。但是在使用remove時會有一些需要註意的地方,不細心的話容易掉坑裏,故記錄在此。

  • remove的原型
template <class ForwardIterator, class T>
  ForwardIterator remove (ForwardIterator first, ForwardIterator last, const T& val);

參數:

[first, last)規定了被操作的範圍,其中不包含last邊界;

val表示要被刪除的值。

  • 示例

技術分享圖片

輸出如下↓↓↓↓↓

技術分享圖片

  • 解析

執行remove後:

1>、返回值為最後一個未被刪除的元素的下一個位置;

2>、原始vector的size未變化;

3>、可以看出remove操作僅僅將後續有效數據往前移動到自由位置,具體算法如下↓↓↓↓

技術分享圖片

坑 - stl之刪除元素