(原創) 如何刪除container中重複的element? (C/C++) (STL)
2007-05-27 14:56
381 查看
Abstract
STL並沒有提供這樣的algorithm,透過簡單的方法,就可以達成這個需求。
Sample Code
1#include <iostream>
10#include <vector>
11#include <algorithm>
12
13using namespace std;
14
15template<typename T>
16
211 2 3
15行
template<typename T>
inline void eliminate_duplicates(T& c) sort(c.begin(), c.end());
c.erase(unique(c.begin(), c.end()), c.end());
}
由於要使用unique(),必須先經過sort()才有用,unique()會將重複的element放到container後面,並且將pointer指向重複的第一個element,erase()將從這個element,一直刪除到container最後,如此只會留下不重複的element。
Reference
Bjarne Stroustrup,The C++ Programming Language Special 3/e,Addison Wesley,2000
STL並沒有提供這樣的algorithm,透過簡單的方法,就可以達成這個需求。
Sample Code
1#include <iostream>
10#include <vector>
11#include <algorithm>
12
13using namespace std;
14
15template<typename T>
16
211 2 3
15行
template<typename T>
inline void eliminate_duplicates(T& c) sort(c.begin(), c.end());
c.erase(unique(c.begin(), c.end()), c.end());
}
由於要使用unique(),必須先經過sort()才有用,unique()會將重複的element放到container後面,並且將pointer指向重複的第一個element,erase()將從這個element,一直刪除到container最後,如此只會留下不重複的element。
Reference
Bjarne Stroustrup,The C++ Programming Language Special 3/e,Addison Wesley,2000
相关文章推荐
- 如何刪除container中重複的element? (C/C++) (STL)
- (原創) 如何將container中的iterator,從一個值取代成另外一個值? (C/C++) (STL)
- (原創) 如何找出兩個container中相同元素的個數? (C/C++) (STL)
- (原創) 如何删除std::vector内的element?(使用find) (C/C++) (STL)
- (原創) 如何使用subscripting的方式新增std::map? (C/C++) (STL)
- (原創) 如何使用remove() algorithm? (C/C++) (STL)
- (原創) 如何使用find() algorithm? (C/C++) (STL)
- (原創) 如何使for_each()傳回值? (C/C++) (STL)
- (原創) 如何利用copy() algorithm將array輸出到cout? (C/C++) (STL)
- (原創) 如何使用for_each() algorithm? (C/C++) (STL)
- (原創) 如何将字符串前后的空白去除? (C/C++) (STL)
- (原創) 如何為程式碼加上行號? (C/C++) (STL)
- (原創) 如何正確的使用迴圈(使用for_each)? (C/C++) (STL) (template)
- (原創) 如何使用C++的標準函式庫進行排序? (C/C++) (STL)
- (原創) 如何列出陣列中大於n的所有元素? (C/C++) (STL)
- (原創) 如何實現getElementByClassName()? (Web) (JavaScript)
- (原創) 如何使用stable_sort() algorithm? (C/C++) (STL)
- (原創) 如何使用unique() algorithm? (C/C++) (STL)
- 如何將container中的iterator,從一個值取代成另外一個值? (C/C++) (STL)
- (原創) 如何将array转成std::vector? (使用vector.insert) (C/C++) (STL)