1. 程式人生 > >13.c++-stl::vector刪除重複元素

13.c++-stl::vector刪除重複元素

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