如何排序矢量和删除相同的值在它

How to sort a Vector and Remove the Same Value in it?

本文关键字:删除 何排序 排序      更新时间:2023-10-16

我有一个包含如下数据的向量:15,27,40,50,15,40

我想对它排序并删除相同的值,所以排序后的输出应该是:15,27,40,50

我试过几种方法,例如:

std::sort(vectProjHori.begin(),vectProjHori.end());
for (std::vector<int>::iterator it=vectProjHori.begin(); it!=vectProjHori.end(); ++it)
{
    if(it+1 != it)
    {
        std::cout << ' ' << *it;
    }
}

但是,它不能删除vector中的相同值。我真的希望有人能给出一个有效的方法来做这件事。

任何帮助将是非常感激的。谢谢你

您可以使用标准函数。

std::sort(vectProjHori.begin(), vectProjHori.end());
vectProjHori.erase(std::unique(vectProjHori.begin(), vectProjHori.end()), vectProjHori.end());

it + 1肯定不是it;

这将完成您的工作,但上面的mwerschy代码更好。c++ 11

#include <iostream>
#include <algorithm>
#include <iterator>

int main() { 
  std::vector<int> v={1,2,8,4,5,5};
  std::sort(v.begin(),v.end());
  auto it=std::unique(v.begin(),v.end());
  v.resize(std::distance(v.begin(),it));
  std::copy(v.begin(),v.end(),std::ostream_iterator<int>(std::cout,"n"));
 }

输出将是:

1
2
4
5
8