C ++ - 在地图中搜索具有相同值的所有键的最快方法是什么?

时间:2017-09-28 09:20:32

标签: c++ dictionary stl find

假设我们有一张初始化地图:

const std::map<int, std::string> map = {
    { 0, "A" },
    { 1, "B" },
    { 2, "A" },
    { 3, "A" },
    { 4, "C" },
    { 5, "A" },
    // ...
};

在1到1000个值的情况下,检索与值"A"关联的所有键的最快方法是什么?

2 个答案:

答案 0 :(得分:3)

您可以使用Boost.Bimap。  Boost.Bimap是一个用于C ++的双向映射库。使用Boost.Bimap,您可以创建关联容器,其中两种类型都可以用作键。

答案 1 :(得分:1)

如果std::map的值不包含任何索引,则只能执行以下操作:

#include <iostream>
#include <map>
#include <string>

int main()
{
    const std::map<int, std::string> map = {
        { 0, "A" },
        { 1, "B" },
        { 2, "A" },
        { 3, "A" },
        { 4, "C" },
        { 5, "A" },
    };

    for (const auto& pair : map) {
        if (pair.second == "A") {
            std::cout << '{' << pair.first << ", " << pair.second << "}\n";
        }
    }
}