gpt4 book ai didi

c++ - 递归创建 std::map 的 std::map

转载 作者:太空狗 更新时间:2023-10-29 23:42:04 24 4
gpt4 key购买 nike

我想知道做这样的事情的最佳方式或更好的方式:

template <int N,typename T,typename X>
class MyMap : public map<T,MyMap<N-1,T,X>>{};

template <typename T,typename X>
class MyMap<1,T,X> : public map<T,X>{};

int main(int argc, char* argv[])
{
MyMap<4,string,double> myMap;

myMap["a"]["b"]["c"]["d"] = 123.456;

cout << myMap["a"]["b"]["c"]["d"];

return 0;
}

最佳答案

您应该使用 typedef,而不是继承,并为参数赋予更有意义的名称和诸如此类的东西,以使其更具可读性。

template<int N, typename Key, typename Value> struct map {
typedef std::map<Key, typename Map<N - 1, Key, Value>::type> type;
};
template<typename Key, typename Value> struct map<1, Key, Value> {
typedef std::map<Key, Value> type;
};
int main() {
map<4, string, double>::type lolsmap;
}

关于c++ - 递归创建 std::map 的 std::map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6066386/

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