gpt4 book ai didi

c++ - 为什么 vector.erase 会删除我所有的重复项?

转载 作者:行者123 更新时间:2023-11-30 03:00:31 25 4
gpt4 key购买 nike

我正在尝试删除 vector 中的重复数字。我用这个来做那个:

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

用谷歌找到它并且工作正常,我的问题是为什么?根据我在 cplusplus 上阅读的内容,erase 从第一个参数删除到最后一个。例如:

vec1.erase(vec1.begin(),vec1.begin()+3);  //removes first 3 elements

unique 返回指向第一个拷贝的指针,所以在更简单的版本中,我正在写的是:

vec1.erase(first duplicate, vec1.end());

我的 vector 不应该在第一次复制后结束吗?

最佳答案

std::unique 就地消除唯一元素并返回指向结果范围末尾的指针。例如,

1 2 2 3 3 3
^begin ^end

成为

1 2 3 . . . (garbage)
^ resulting end

您正在考虑 std::adjacent_find,它确实返回第一个重复元素的迭代器。

关于c++ - 为什么 vector.erase 会删除我所有的重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11938888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com