gpt4 book ai didi

c++ - 从两个 map 创建一个 set_difference vector

转载 作者:太空狗 更新时间:2023-10-29 20:33:14 30 4
gpt4 key购买 nike

目前我正在获取两个 map 的集合差异,然后遍历生成的 map 。

理想情况下,我想创建一个差异 vector 而不是 map 。这样我可以更有效地进行迭代。

typedef std::map<int, Info> RegistrationMap;

RegistrationMap redundantRegs;
std::set_difference(map1.begin(), map1.end(), map2.begin(), map2.end(),
std::inserter(redundantRegs, redundantRegs.begin()),
[](const std::pair<int, Info> &p1, const std::pair<int, Info> &p2 {return p1.first < p2.first;});

for (auto reg : redundantRegs)
{
map2[hiu.first].Status = "delete";
}

您将如何创建集合差异的 vector ?这可以在 set_difference 函数中完成吗?

我正在寻找获得差价的最有效方法。

最佳答案

std::set_difference可以将其输出写入任何输出迭代器,因此将输出写入 vector 没有问题:

std::vector<std::pair<int, Info>> redundantRegs;
std::set_difference(map1.begin(), map1.end(), map2.begin(), map2.end(),
std::back_inserter(redundantRegs),
...);

(注意:在您的比较器中,将 std::pair<int, Info> 更改为 std::pair<const int, Info> 以避免不必要的复制。)

关于c++ - 从两个 map 创建一个 set_difference vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56466369/

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