STL—vector删除重复元素

我不是女神ヾ 2022-04-13 12:31 574阅读 0赞

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

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

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

然后使用unique算法。

unique只是把重复的元素放到容器的后面(容器的长度没变,只是元素顺序改变了),而它本身会返回一个迭代器,指向这些重复元素的开始部分。因此要向真正删除这些元素,还是要调用erase处理一下。

vecSrc.erase( unique( vecSrc.begin(), vecSrc.end() ), vecSrc.end() );注意:此处并未使用循环,只一句话就删除了容器中所有相邻元素中重复的元素。

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

1358997620_5911.png

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

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

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

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

操作符重载的示例如下:

class CTest

……

public:

  1. BOOL operator<( const CTest& oCompany ) const
  2. \{
  3. return this->m\_nCompanyId < oCompany.m\_nCompanyId;
  4. \}
  5. BOOL operator==( const CECompany& oCompany ) const
  6. \{
  7. return this->m\_nCompanyId == oCompany.m\_nCompanyId;
  8. \}

}





发表评论

表情:
评论列表 (有 0 条评论,574人围观)

还没有评论,来说两句吧...

相关阅读