【转】STL— vector 删除重复结构体元素-- sort和unique

来源:互联网 发布:阿里云服务器欠费 编辑:程序博客网 时间:2024/05/29 08:34

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/primer_programer/archive/2009/05/21/4206156.aspx

 

STL提供了很多实用的算法,这里主要讲解sort和unique算法。

删除重复元素,首先将vector排序。

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

然后使用unique算法。

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

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

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

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

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

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

操作符重载的示例如下:

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;
}

}