gpt4 book ai didi

c++ - 在 std::unordered_map 中查找对应于相同值的所有键

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

我有一个 unordered_map 看起来像这样:

std::unordered_map<int, std::string> theMap2 = {{1,"a"}, {2,"b"}, {3,"c"}, {4,"a"}};

我想找到所有具有相同值的键让我们说“a”。除了明显的方式之外的任何建议:

std::vector<int> arrKeys;
std::string value = "a";
for (const auto& element : theMap)
if (element.second == value)
arrKeys.push_back(element.first);

最佳答案

我认为“显而易见”的方式非常好:它简单、简短且易于阅读。

另一种选择是使用 STL 算法。你需要的是 transform_if 算法,这样你就可以说:

std::transform_if(std::begin(theMap), std::end(theMap),  std::back_inserter(arrKeys), check_value, get_value);

但是STL中没有这样的。我可以建议的是:

std::vector<int> arrKeys;
std::string value = "a";

auto check_value = [&](std::pair<const int, std::string> const& p)->bool
{
return (p.second == value);
};

auto end = std::end(theMap);
auto it = find_if(std::begin(theMap), end, check_value);
while (it != end)
{
arrKeys.push_back(it->first);
it = find_if(std::next(it), end, check_value);
}

关于c++ - 在 std::unordered_map 中查找对应于相同值的所有键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30892022/

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