c++ - 检查两个 vector<T> 之间的差异

标签 c++ sorting c++11 vector

假设您有 2 个 vector ,比如说 v1v2具有以下值:

v1 = {8,4,9,9,1,3};
v2 = {9,4,3,8,1,9};

检查它们是否“相等”的最 STL 方法是什么?我将“相等”定义为无论顺序如何,内容都相同。我宁愿不排序就这样做。

我倾向于 build 两个 std::map<double, int>计算 vector 的每个元素。

我只需要算法中的 bool 值是/否。

你怎么说?

Stack Overflow 上的其他对话诉诸于对 vector 进行排序,我宁愿避免这种情况。因此这个新线程。

最佳答案

I was leaning towards building two std::map to count up each of the vector's elements.

这将比仅创建排序 vector 慢得多。 (另请注意,std::map 由排序提供支持;它只是使用红黑树或 AVL 树来实现)映射是针对均匀混合优化的数据结构插入和查找;但是您的用例是一大堆插入,然后是一大堆没有重叠的查找。

我只会对 vector 进行排序(或者复制并排序这些 vector ,如果不允许销毁源拷贝),然后使用 vector 的内置 operator ==

关于c++ - 检查两个 vector<T> 之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13575748/

相关文章:

python - 根据键对python列表进行排序

c++ - 在保持数组有序的同时插入和删除数组中的元素

c++ - 将 const T (&ref)[N] 绑定(bind)到 T[N] 类型的对象

c++ - 将包含多个数字的字符串转换为整数

c++ - Qt 4.8.5中,QTimeLine中setPaused(true)之后setPaused(false)和resume()的区别

Java,比较3个整数,排列最大,中值和最小

c++ - 将唯一指针 vector 复制到新 vector 中

c++ - 如何使用 enable_if 有条件地定义 << 运算符

c++ - 如何在跳水比赛中降低循环内的最高/最低分数?

c++ - 只有第一个计算着色器数组元素出现更新