gpt4 book ai didi

c++ - 在类方法内部访问和分配的多维 map 模板

转载 作者:太空宇宙 更新时间:2023-11-04 13:13:04 25 4
gpt4 key购买 nike

我想知道这是否是在类方法内分配多维映射的有效方法,如果不是,我将如何去做。

    template<typename T>
std::map<std::string, std::map<std::string, T>> MT;

template<typename T>
void MonsterTemplate(std::string name, std::string node, template T v) {
MT[name][node] = v;
}

Edit1:我编译了,它给了我很多错误,但我只给出第一个的一部分。错误 C3376:“MonsterType::MT”:只允许使用静态数据成员模板

编辑2:我尝试创建一个结构

template<typename T>
struct Wrapper
{
typedef std::map<std::string, std::map<std::string, T>> MT;
};

然后我在类里面添加了这个

template<typename T>
Wrapper<T>::MT mt;

template<typename T>
void MonsterTemplate(std::string name, std::string node, template T v) {
mt[name][node] = v;
}

然后在许多其他错误中遇到了这个错误。警告 C4346:“MT”:从属名称不是类型

该结构在类外部工作而不是多维映射,但我不确定如何将它作为多维映射访问。只是尝试不同的东西。

我的想法是我想存储多个对象数据的数据并按名称、节点和值对它们进行索引。

编辑3:

所以这就是我所做的,并且没有出现错误(还没有:p)

    std::map<std::string, std::map<std::string, int>> MT;

void MonsterTemplate(std::string name, std::string node, int v) {
MT[name][node] = v;
}

最佳答案

只是为任何寻找类似东西的人更新这个

所以我想出了如何构建它。

template<typename T>
struct Test
{
std::map<std::string, std::map<std::string, std::map<size_t, std::map<std::string, T>>>> testmap;

void MonsterTemplate(std::string creatureName, std::string name, std::string node, T v) {
size_t i = testmap[creatureName][name].size();
testmap[creatureName][name][i][node] = v;
}
};

Test<std::string> str;

由于我需要为 T 提供各种数据类型,该结构比尝试找到一种方法将模板分配给静态类要好得多,所以我只使用 std::string 为例。

这可以在类的方法内部使用,因为 str 具有全局作用域。str.MonsterTemplate(creatureName, name, node, value);

关于c++ - 在类方法内部访问和分配的多维 map 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38800406/

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