47、删除vector中重复元素

1、首先将vector排序。

sort( vecSrc.begin(), vecSrc.end() );

2、然后使用unique算法。

vecSrc.erase( unique(vecSrc.begin(), vecSrc.end() ), vecSrc.end() );

unique返回值是重复元素的开始位置。

如果vector中存储的元素是自定义的结构或者是类,那么就需要重载操作符。

3、根据类的某一个成员变量排序或者比较。

sort算法需要重载"<"操作符。

unique算法需要重载"=="操作符。

操作符重载的示例如下:

View Code
class CTest
{
……
public:
BOOL operator<( const CTest& oCompany ) const
{
return this->m_nCompanyId < oCompany.m_nCompanyId;
}
BOOL operator==( const CECompany& oCompany ) const
{
return this->m_nCompanyId == oCompany.m_nCompanyId;
}
}

参考:

[1] http://blog.csdn.net/primer_programer/article/details/4206156

[2] http://blog.163.com/zhoumhan_0351/blog/static/39954227201031311555313/

posted @ 2012-03-20 19:23  浪里飞  阅读(6247)  评论(0编辑  收藏  举报