假设您有 2 个 vector ,比如说 v1
和 v2
具有以下值:
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/