gpt4 book ai didi

具有两个不同值的键的 C++ 映射

转载 作者:行者123 更新时间:2023-11-30 04:05:00 29 4
gpt4 key购买 nike

我需要一个映射,它可以有两个不同数据类型的键,但指向相同的结构。

struct DataStruct {
SomeEnum keyEnum; // <---- key as enum
std::string keyString; // <----- a key as a string

int arbitrarydata;
int moredata;
}

然后我想要一个 std::map 我可以这样查找:

std::map<SomeEnum||std::string, DataStruct> dataMap; 
dataMap[SomeEnum::AValue] = dataStruct1;
dataMap["mykey"] = dataStruct2;

这甚至可能吗?还是我需要制作 2 张 map ?好像有点浪费或者我是否需要重载运算符或其他东西?

最佳答案

你可以像这样使用std::pair:

#include <iostream>
#include <map>
#include <utility>

typedef enum {A, B, C} en;

int main ()
{
en myen = A;
std::map<std::pair<char,int>, int> mymap;

mymap.insert ( std::pair<std::pair<char, int>,int>(std::make_pair('a',myen),200) );
mymap.insert ( std::pair<std::pair<char, int>,int>(std::make_pair('z',30),400) );

// showing contents:
std::cout << "mymap contains:\n";
for (std::map<std::pair<char,int>, int>::iterator it=mymap.begin(); it!=mymap.end(); ++it)
std::cout << "(" << it->first.first << ", " << it->first.second <<
") => " << it->second << '\n';

return 0;
}

不是问题的答案:

请注意,在 C++11 中,您可以使用 enum class,这通常更有用。

关于具有两个不同值的键的 C++ 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23500749/

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