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/