gpt4 book ai didi

c++ - 从 `map` 中删除不在 `set` 中的元素

转载 作者:行者123 更新时间:2023-11-30 00:50:43 25 4
gpt4 key购买 nike

std::map<std::string, Obj> myMap;
std::set<std::string> mySet;

我想从 myMap 中删除那些键不在 mySet 中的键。

我该怎么做?我找到了std::remove_if算法,但它似乎不适用于这里。

最佳答案

我将从这种简单的方法开始:

for (auto it = myMap.begin(); it != myMap.end(); )
{
if (mySet.find(it->first) == mySet.end()) { myMap.erase(it++); }
else { ++it; }
}

如果您想要更高效的东西,您可以同步迭代两个容器并进行键式比较以利用兼容的元素顺序。另一方面,本算法甚至适用于无序容器,并且假设您的键是字符串,无序容器无论如何都可能具有更好的性能。

关于c++ - 从 `map` 中删除不在 `set` 中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24056399/

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