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 宣告不是定義,也不分配儲存空間,程式中變數可以宣告多次,但只能定義一次。只有...