您的位置:首页 > 编程语言 > C语言/C++

(原創) 如何刪除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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: