关于C++中unique函数在离散化中的使用

如果使用vector作为离散化的容器,一般情况下会先对vector进行排序然后再unique。但这样的话unique后实际上是把剩余重复的元素移到了容器最后面而非删除,因此直接对此时的容器进行二分查找会出现错误。

可行的写法是将erase和unique结合起来:

sort(v.begin(), v.end());
vector<int>::iterator it = unique(v.begin(), v.end());
v.erase(it, v.end());

当然如果使用数组的话unique完后可以直接根据新的范围二分查找(或者直接选择自己手动unique)。

posted @   脂环  阅读(190)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2020-05-02 Codeforces Round #638 D. Phoenix and Science(贪心/思维好题)
2020-05-02 Codeforces Round #638 C. Phoenix and Distribution(字典序/排序/构造)
2020-05-02 Codeforces Round #638 B. Phoenix and Beauty(构造)
2020-05-02 Codeforces Round #638 A.Phoenix and Balance(水题)
点击右上角即可分享
微信分享提示
主题色彩