gpt4 book ai didi

c++ - 如何获得两个 std::unordered_map 的集合交集?

转载 作者:行者123 更新时间:2023-11-30 03:17:15 25 4
gpt4 key购买 nike

我有两个 std::unordered_map具有 0 个或多个相交键的实例。我正在尝试返回 std::unordered_map 的新实例其键是 mapA 的键的交集和 mapB这些键的值来自 mapA .

如何找到这两个 map 的交集 mapAmapB同时仅保留 mapA 中的值?

以下提供了我要实现的结果的示例:

#include <unordered_map>

typedef std::unordered_map<std::string, double> MapType;

MapType intersectFilter(MapType const & mapA, MapType const & mapB);

int main()
{
MapType mapA = { {"keyA", 1}, {"keyB", 2} };
MapType mapB = { {"keyA", 5}, {"keyK", 3} };

MapType mapC = intersectFilter(mapA, mapB);
// The resulting `mapC` should be:
// { {"keyA", 1} }

return 0;
}

最佳答案

您不是在删除条目,而是有条件地复制。这听起来像是 std::copy_if 的工作.

MapType intersectFilter(MapType const & mapA, MapType const & mapFilter)
{
MapType result;
auto inserter = std::inserter(result, result.end());
auto predicate = [&mapFilter](MapType::const_reference item)
{ return mapFilter.find(item.first) == mapFilter.end(); }; // or mapFilter.contains in C++20
std::copy_if(mapA.begin(), mapA.end(), inserter, predicate);
return result;
}

关于c++ - 如何获得两个 std::unordered_map 的集合交集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55656233/

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