我有一个名为buttonValues的C++映射,如下所示。

map<int, int> buttonValues;

我将一些数据放入 map ,如下所示。
buttonValues.insert(std::pair<int, int>(0, 1));
buttonValues.insert(std::pair<int, int>(1, 3));
buttonValues.insert(std::pair<int, int>(2, 0));

我想做的是在第二列中搜索值0,如果在第二列中找到0,则在第一列中返回值。在此示例中,我想返回的值为2。到目前为止,我相信我可以使用以下命令在第二列中搜索0:
buttonValues.find(0)->second

但是,如何获得第一列中对应的值?

谢谢
卡鲁姆

最佳答案

buttonValues.find(0)->second将为您提供与0键对应的值(“第二列”)。在您的示例中,它将返回1。您需要遍历 map 并查找= 0值,然后返回键:

for (const auto& keyval : buttonValues) // Look at each key-value pair
{
    if (keyval.second == 0) // If the value is 0...
    {
        return keyval.first; // ...return the first element in the pair
    }
}

您可以将其放在函数中。请注意,映射具有唯一键,但不一定具有唯一值。因此,您应该处理多个键值为0的情况。

10-07 15:39