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

C++ C++;-在地图中搜索具有相同值的所有关键点的最快方法是什么?,c++,dictionary,stl,find,C++,Dictionary,Stl,Find,假设我们有一个初始化的映射: const std::map<int, std::string> map = { { 0, "A" }, { 1, "B" }, { 2, "A" }, { 3, "A" }, { 4, "C" }, { 5, "A" }, // ... }; const std::map={ {0,“A”}, {1,“B”}, {2,“A”}, {3,“A”}, {4,“C”}, {5,“A”}, // ...

假设我们有一个初始化的映射:

const std::map<int, std::string> map = {
    { 0, "A" },
    { 1, "B" },
    { 2, "A" },
    { 3, "A" },
    { 4, "C" },
    { 5, "A" },
    // ...
};
const std::map={
{0,“A”},
{1,“B”},
{2,“A”},
{3,“A”},
{4,“C”},
{5,“A”},
// ...
};
在存在1到1000个值的情况下,检索与值“A”关联的所有键的最快方法是什么?

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

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

对于不包含其值索引的
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";
        }
    }
}
#包括
#包括
#包括
int main()
{
常量标准::映射={
{0,“A”},
{1,“B”},
{2,“A”},
{3,“A”},
{4,“C”},
{5,“A”},
};
用于(常数自动和配对:映射){
if(pair.second==“A”){

std::cout对于不包含其值索引的
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";
        }
    }
}
#包括
#包括
#包括
int main()
{
常量标准::映射={
{0,“A”},
{1,“B”},
{2,“A”},
{3,“A”},
{4,“C”},
{5,“A”},
};
用于(常数自动和配对:映射){
if(pair.second==“A”){

std::cout映射多映射组合。只有内存可以支付执行速度。定义“最快的方法”:最快的写入、读取、编译和运行速度。?映射多映射组合。只有内存可以支付执行速度。定义“最快的方法”:写、读、编译、运行速度最快..?对于OP来说,它应该是
boost::bimap
。对于OP来说,它应该是
boost::bimap