有没有一种好的方法可以通过键和值进行搜索?

4

我目前在使用C++中的map<int,int>。我可以轻松地检查键是否存在,但是是否有一种有效的方法来检索具有特定值的键呢?我的目的是获取所有具有给定值的元素,然后更新它们的值。


有很大的可能性,你的问题存在更好的数据结构。你能否概括地描述一下你正在做什么? - JoshD
实际上,我正在玩弄这个问题:https://dev59.com/olDTa4cB1Zd3GeqPM-Jl 我已经想出了一个解决方案,并正在尝试在C++中实现它。我还没有验证自己的解决方案,但我想知道如果效率是一个问题,这个问题实际上是如何解决的。 - Legend
2个回答

9

您可能会对Boost.Bimap感兴趣,该技术与IT相关。


谢谢。我现在会仔细研究并回复。 - Legend
这绝对非常有用 +1 - Chubsdad

0

现在使用c++11及以上版本很容易。

请尝试以下示例。

//DECLARE A MAP
std::map<int, int> testmap;

//SAMPLE DATA
testmap.insert(std::make_pair(1, 10));
testmap.insert(std::make_pair(2, 20));
testmap.insert(std::make_pair(3, 30));
testmap.insert(std::make_pair(4, 20));

//ELEMENTS WITH VALUE TO BE FOUND
int value = 20;

//RESULTS
std::map<int,int> keysMatching;

//ONE STEP TO FIND ALL MATCHING MAP ELEMENTS
std::copy_if(testmap.begin(), testmap.end(), std::inserter(keysMatching, keysMatching.end()), [value](const auto& v) {return v.second == value; });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接