我知道这个问题已经被问了很多,但我无法找到最好的(最有效)的方式来删除载体复制的成员(类型double
),而保持1份和原始矢量的顺序。从载体删除重复的成员,同时维持秩序
1
A
回答
3
如果你的数据不是double
S,只是做与你已经通过remove_if
看到一个unordered_set
保持跟踪一通 - erase
成语会工作。然而,当检查平等时,坏消息是:你可能认为应该产生相同的值的两个派生可能会产生不同的结果。 A set
将允许查找附近的值。只需使用equal_range
加正负号ε而不是find
来查看在vector
之前是否存在与您之前的值近似相等的其他值,并使用相同的remove
erase
惯用法。
的remove
erase
成语的样子:
vec.erase(std::remove_if(vec.begin(), vec.end(), [&](double x)->bool{
// return true if you want to remove the double x
}, vec.end());
在C++ 03
不能在线完成。
上面的lambda将按顺序调用每个元素,就像循环的主体一样。
1
如果您必须/希望使用矢量*,则可能最容易在插入时捕获重复项 - 如果要插入的点已经存在,请将其装箱。
对于一个非常大的集合的另一种方法是在每次N次插入之后进行排序和重复搜索,其中N是在对重复进行排序和搜索之前等待的完美插入次数。 (计算N作为读者的练习。)
您的方法和N的值(如果相关)取决于元素数量,数组更改频率,检查内容的频率以及重复发生的可能性。 (*显然,矢量是伟大的,因为它们的缺点在于现代计算机倾向于踢屁股这么辛苦并不重要,而且用线性搜索来快速起效。至少我认为这就是Bjarn的说法here比较矢量。到链表)
相关问题
- 1. 巴什 - 删除重复维持秩序
- 2. Python在维持秩序的同时从列表中删除一些重复项?
- 3. R:删除矢量重复,但维持秩序
- 4. 删除差,但维持秩序和重复在Python列表
- 5. XSLT转化重复元素融入其中,同时维持秩序
- 6. 维持秩序的R中
- 7. 如何从一个美丽的汤结果集中删除重复的值,同时保持秩序?
- 8. 删除N维矢量的重复成员
- 9. 删除重复和维持秩序时,列表中的元素是列表本身
- 10. 分组维持秩序
- 11. 分组维持秩序
- 12. 为了维持秩序
- 13. 保持秩序时展平多维物体
- 14. 删除所有重复列表成员
- 15. 大熊猫 - pivot_table,同时维持秩序失败
- 16. 斯卡拉集合分组,同时维持秩序
- 17. jQuery的foreEach使用Ajax /维持秩序
- 18. 从文件中删除重复列表,同时保持顺序-python3.5
- 19. 矢量差异,同时保持秩序
- 20. 从元组列表中删除重复的成员
- 21. 删除重复项,同时保持并行列表同步
- 22. 从数组中删除,但保持秩序?
- 23. 获取一个向量的索引到其他载体,但维持秩序
- 24. SQL删除与重复的值的行,同时保持一个
- 25. 合并多个呼叫维持秩序
- 26. SQL:收益维持秩序值
- 27. 在JSON(蟒蛇瓶)维持秩序
- 28. DB ::选择不维持秩序
- 29. 从std :: vector中删除/删除重复元素的方法,同时保持顺序?
- 30. 从计划列表中删除所有重复成员
请告诉我们你试过了什么? –
我有一个点(定义类型)的向量,其中可能有一些点已在过程中插入两次。我想删除/删除复制的点(只有第二个副本,我的意思是我想要第一个副本)。也想保持原始矢量的顺序。 –
非常感谢@Johnsyweb它是最有效的方式吗? –