C++裡vector::erase函式
阿新 • • 發佈:2019-01-24
vector::erase():從指定容器刪除指定位置的元素或某段範圍內的元素
vector::erase()方法有兩種過載形式
如下:
iterator erase( iterator _Where);
iterator erase( iterator _First, iterator _Last);
如果是刪除指定位置的元素時:
返回值是一個迭代器,指向刪除元素下一個元素;
如果是刪除某範圍內的元素時:返回值也表示一個迭代器,指向最後一個刪除元素的下一個元素;
例子:
#include <iostream>
#include
<vector>
using
namespace
std;
int
main(
void
)
{
vector<
int
>array;
array.push_back(100);
array.push_back(300);
array.push_back(300);
array.push_back(300);
array.push_back(300);
array.push_back(500);
vector<
int
>::iterator
itor;
for
(itor=array.begin();itor!=array.end();itor++)
{
if
(*itor==300)
{
itor=array.erase(itor);
}
}
for
(itor=array.begin();itor!=array.end();itor++)
{
cout<<*itor<<
""
;
}
return
0;
}
輸出結果: 100
300 300 500
在本題中,當 *itor==300成立時,刪除第一個值為300的元素,同時itor指向下一個元素(即是第二個值為300的元素),
在for(;;itor++)執行itor,itor指向第三個值為300的元素,進入下一個迴圈
進入迴圈滿足*itor==300,重複上面的過程,執行完迴圈,itor執行值為500的元素。
所有整個過程中,只刪除了2個值為300的元素。