Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么vector.erase会删除我所有的副本?_C++_Vector_Unique_Erase - Fatal编程技术网

C++ 为什么vector.erase会删除我所有的副本?

C++ 为什么vector.erase会删除我所有的副本?,c++,vector,unique,erase,C++,Vector,Unique,Erase,我试图删除向量中的重复数字。我用这个来做到这一点: vec1.erase( unique(vec1.begin(),vec1.end()) ,vec1.end()); 用谷歌找到的,效果很好,我的问题是为什么? 根据我在cplusplus上读到的内容,擦除从第一个参数删除到最后一个参数。 例: 并且unique返回指向第一个副本的指针,因此在更简单的版本中,我要写的是: vec1.erase(first duplicate, vec1.end()); 我的向量不应该在第一次复制后结束

我试图删除向量中的重复数字。我用这个来做到这一点:

vec1.erase(   unique(vec1.begin(),vec1.end())   ,vec1.end());
用谷歌找到的,效果很好,我的问题是为什么? 根据我在cplusplus上读到的内容,擦除从第一个参数删除到最后一个参数。 例:

并且unique返回指向第一个副本的指针,因此在更简单的版本中,我要写的是:

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

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

std::unique
消除了位置上的唯一元素,并返回一个指向范围结果端的指针。比如说,

1 2 2 3 3 3
^begin      ^end
变成

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

您考虑的是
std::innect\u find
,它确实会向第一个重复元素返回迭代器。

cplusplus被认为不是一个好的参考。试着阅读。
1 2 3 . . . (garbage)
      ^ resulting end