gpt4 book ai didi

c++ - 如何实现具有不同数据类型作为值的 map ?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:27:34 24 4
gpt4 key购买 nike

我想将两种(不是更多)不同的数据类型作为值放入映射中,如下例所示:

typeX A, B, ...;
typeY Z, Y, ...;

void func (typeX) { ... }
void func (typeY) { ... }

std::map <std::string, what_to_put_here??> map;
map["a"] = A;
map["z"] = Z;
...

std::vector<std::string> list;
// This list will be something like "a", "y", ...

for (unsigned int i = 0; i < list.size(); ++i)
func( map[list[i]] )

显然这是行不通的,因为 map 只接受一种数据类型的值。但是,当遍历 list 时,对 func() 的调用应该是明确的,因为 map[list[i]] 的类型是已知的.

我想避免显式转换或类型检查,即像这样的事情:

if (typeid( map[list[i]] ).name() == "typeX")
func( map[list[i]] )
else if (typeid( map[list[i]] ).name() == "typeY")
func( map[list[i]] )

这可能吗?同样,它将仅限于两种不同的数据类型。

最佳答案

您想使用 boost::variant :

std::map <std::string, boost::variant<typeX, typeY>>

关于c++ - 如何实现具有不同数据类型作为值的 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21384739/

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