如何排序矢量和删除相同的值在它
How to sort a Vector and Remove the Same Value in it?
我有一个包含如下数据的向量: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
相关文章:
- 类(可能是代理)的命名,允许在不修改基础容器的情况下对项目进行排序和删除
- 从未排序的数组中删除重复项
- 擦除删除成语的性能增益从何而来
- 查找排序的容器,其中指向元素的指针在添加/删除时不会更改
- C++ 从向量中删除重复值而不进行排序
- C bST删除节点会破坏排序算法
- C 排序间隔结构以及删除重叠的间隔
- C++ 最佳键值容器,可按值排序,并可快速删除
- 删除指向排序的字符串阵列的指针会在运行后会有一个错误
- 是否有具有对数时间插入、删除和查找(带距离)的排序数据结构
- 删除已排序链表中的值
- 仅使用几乎相等的标准(无排序)从容器中删除重复项的最有效方法是什么
- 如何从未排序的 std::vector 中删除重复项,同时使用算法保持原始排序
- 全局排序和每原子变量排序有何不同
- 使用"pop_front"从排序列表中删除元素会导致崩溃
- 链表插入、删除、排序
- 排序和删除不适用于大型矢量的重复项
- 从已排序的数组中删除重复项
- 成功删除了矢量中的一个元素,但想知道它如何影响其他元素,以及如何重新排序矢量
- 排序后的数据结构通过迭代器快速迭代、插入、删除