gpt4 book ai didi

c++ - 比较两个映射 vector

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:36:17 25 4
gpt4 key购买 nike

我有两种获取大量数据的方法。数据存储在已排序的 vector<map<string, int> > 中.

我想确定两个 vector 之间是否存在不一致。

我目前在做什么(伪代码):

for i in 0... min(length(vector1), length(vector2)):
for (k, v) in vector1[i]:
if v != vector2[i][k]:
// report that k is bad for index i,
// with vector1 having v, vector2 having vector2[i][k]

for i in 0... min(length(vector1), length(vector2)):
for (k, v) in vector2[i]:
if v != vector1[i][k]:
// report that k is bad for index i,
// with vector2 having v, vector1 having vector1[i][k]

这通常有效,但如果 vector1 就会严重崩溃有a, b, c, dvector2a, b, b1, c, d (它报告 b1cd 的损坏)。我正在寻找一种算法,该算法告诉我 vector2 中有一个额外的条目与 vector1 相比.

我想我想做一些事情,当我遇到不匹配的条目时,我会查看第二个 vector 中的下一个条目,如果在第二个 vector 结束之前找到匹配项,则存储索引 i在第二个 vector 中找到的条目,并移动到匹配第一个 vector 中的下一个条目,从 vector2[i+1] 开始.

有没有更简洁的方法来做到这一点?一些我没遇到过的标准算法?

我在 C++ 工作,因此欢迎使用 C++ 解决方案,但任何语言或伪代码的解决方案也很棒。

例子

给定任意 map 对象:a , b , c , d , e , fg ;

vector1 : a , b , d , e , f

vector2 : a , c , e , f

我想要一个算法来告诉我:

Extra b at index 1 of vector1, and vector2's c != vector1's d.

或者(我认为这是一个有效等价的结果)

vector1's b != vector2's c and extra d at index 2 of vector1

编辑

我最终使用了 std::set_difference ,然后对两个集合的差异进行一些匹配,找出哪些条目相似但不同,哪些条目在另一个 vector 中完全不存在。

最佳答案

类似于 std::mismatch算法

你也可以使用 std::set_difference

关于c++ - 比较两个映射 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1265702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com