C 學習 原創 remove和rem

2021-06-20 02:06:41 字數 1483 閱讀 1127

c++學習【原創】remove和remove_copy函式的應用

孫宇洪 remove函式的作用是:給你乙個值val,讓你刪除乙個容器中所有等於val的元素。函式引數:remove(first,last,val);//first為容器的首迭代器,last為容器的末迭代器,val為要查詢的值。

注意:remove函式並非是真正意義上的刪除!一般與容器中的erase成員函式連用。為什麼呢?讓我們先來看一下remove函式在stl中的源**:

template

outputiterator remove_copy ( inputiterator first, inputiterator last,

outputiterator result, const t& value )

其實這個函式只是通過迭代器的指標向前移動來刪除,所以最後會有一些元素的空間沒有被完全釋放。這個函式的引數是:返回進行刪除操作後,最後乙個元素的值。

那麼要使用erase成員函式連用,**就是這樣:myvector.erase(remove(v.begin(),v.end(),val),v.end());

這樣就將最後刪除了最後的殘餘元素。

我們也可以使用resize當erase函式使用,**就是這樣:myvector.resize(remove(first,last,val)-v.begin());這樣是不是就比使用erase成員函式簡單多了。

看乙個例題:輸入n個數字,再輸入乙個m,表示要刪除n個數字中所有等於m的數字,並輸出經過刪除操作後的序列。

使用remove函式+resize成員函式的應用 

或者 remove函式+erase成員函式的應用。

**:#include

#include

#include

#include

using namespace std;

int main()

cin>>ask;

v.resize((remove(v.begin(),v.end(),ask)-v.begin()));

for(vector ::iterator iter=v.begin();iter!=v.end();iter++)

cout<<*iter<<" ";

cout<

return 0;

}remove_copy函式也是和remove函式的功能差不多,只不過是最後將結果存放到result容器中(尾部帶上殘餘的元素一起複製的)。函式引數:remove_copy(first,last,result,val);//first為容器的首迭代器,last為容器的末迭代器,result為存放結果的陣列,val為需要查詢的元素。

和上面的例題相同,使用remove_copy函式的**(resize):

#include

#include

#include

using namespace std;

int main()

C 學習 原創 unique和uni

c 學習 原創 unique和unique copy函式的應用 孫宇洪 unique函式的功能是 去除相鄰的重複元素 只保留乙個 函式引數 unique first,last,compare first為容器的首迭代器,last為容器的末迭代器,compare為比較函式 可略寫 注意 unique函...

C 學習 原創 Orders(nex

c 學習 原創 orders next permutation和prev permutation函式的應用 孫宇洪 題目 題意 給你乙個字串,先讓你輸出排序後的字串,然後再依次輸出排序後的字串的全排列。分析 如果這道題是用c寫的話,我們就要寫乙個遞迴函式,不過還好這道題的資料量不大 我試過,給你的字...

原創 c 學習筆記一

1,類型別變數的初始化 如果定義某個類的變數時沒有提供初始化式,這個類也可以定義初始化時的操作。它是通過定義乙個特殊的建構函式即預設建構函式來實現的。2,可以通過使用 extern 關鍵字宣告變數名而不定義它。extern 宣告不是定義,也不分配儲存空間,程式中變數可以宣告多次,但只能定義一次。只有...