c++ unqiue 配合erase 去重

本文介绍了一种在C++中使用unique函数去除容器中相邻重复元素的方法,并展示了如何配合erase函数来完成整个去重过程。这种方法适用于需要高效处理大量数据的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

unique “去除相邻的相同元素” 实际并未去除  只是把不重复的依次移动到了前面 实现方法如下:

iterator My_Unique (iterator first, iterator last)
{
  if (first==last) return last;
 
  iterator result = first;
  while (++first != last)
  {
    if (!(*result == *first)) 
      *(++result)=*first;
  }
  return ++result;
}

但是unique 返回了++result  因此可以配合erase删除区间

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

unique_ptr 是 C++11 引入的智能指针之一,用于管理动态分配的对象。它的使用场景主要有以下几个方面: 1. 独占资源管理:unique_ptr 的最大特点是独占所指向的对象,即同一时间只能有一个 unique_ptr 指向一个对象。这种独占性使得 unique_ptr 在资源管理方面非常有用,例如在函数返回时,可以将对象的所有权从一个 unique_ptr 转移给另一个 unique_ptr,从而避免了手动释放资源的麻烦和潜在的内存泄漏。 2. 防止内存泄漏:由于 unique_ptr 的特性,可以保证当 unique_ptr 超出作用域时,它所管理的对象会自动被销毁。这避免了手动释放资源的繁琐和容易出错的问题,有效地防止了内存泄漏。 3. 与 RAII(资源获取即初始化)原则结合:RAII 是一种 C++ 资源管理的编程范式,unique_ptr 与之紧密结合。通过将资源(如动态分配的对象、文件句柄等)的所有权交给 unique_ptr,可以保证在任何情况下都能正确释放资源,无论是正常执行还是异常情况。 4. 支持自定义删除器:unique_ptr 允许为其管理的对象指定自定义的删除器,即在对象销毁时执行特定的清理操作。这在需要特殊资源管理行为的情况下非常有用,例如通过自定义删除器可以使用 delete[] 释放动态分配的数组。 总之,unique_ptr 提供了一种简单、安全、高效的方式来管理动态分配的对象,避免了手动资源管理所可能引发的问题,是 C++ 代码中常用的智能指针之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值