gpt4 book ai didi

c++ - 在 map 中包含 map 的结构? (C++/STL)

转载 作者:太空狗 更新时间:2023-10-29 21:30:22 25 4
gpt4 key购买 nike

我想知道是否可以创建一个包含多个变量和映射中的映射的结构。

我现在拥有的:

typedef std::map<std::string,double> lawVariables;  

struct ObjectCustomData {
std::string objectType;
bool global_lock;
std::map<std::string, lawVariables> lawData;
};

此结构随后作为该对象的单个数据 block 传递给另一个函数。

结构设置如下:每个对象都有一个数据 block ,其中包含:它的 ObjectType、一个用于锁的 bool 值,以及可能如下所示的不同数量的“法则”:

law1 -> var_a = 39.3;
-> var_g = 8.1;
law8 -> var_r = 83.1;
-> var_y = 913.3;
-> var_a = 9.81;

首先,我不确定是否应该在 Map 中使用 Map,其次,即使这是有效的,我也不确定如何用数据填充它以及之后如何调用它。我查看 map 是因为这样我就可以(根据名称)搜索某个对象是否具有特定规律,以及该规律是否具有特定变量。

(抱歉第一次出现凌乱的帖子,希望这会更好:))

最佳答案

I was wondering if it was possible to create a struct containing a number of variables and a map in a map

是的。可以将 Map 作为另一个 map 中的值。

如果您对插入顺序很讲究,并且内部映射的条目较少,那么您的数据结构可以如下所示:

typedef std::vector<std::pair<std::string,double> > lawVariables;  

struct ObjectCustomData {
std::string objectType;
bool global_lock;
std::map<std::string, lawVariables> lawData;
};

编辑: 我现在看到了你的编辑。如果查找是您的主要需求,那么请使用 map 。

例子:

 typedef std::map<std::string,double> lawVariables;  

struct ObjectCustomData {
std::string objectType;
bool global_lock;
std::map<std::string, lawVariables> lawData;
};

void test(ObjectCustomData& data)
{
lawVariables& variable = data.lawData["law_1"];
variable["var_a"] = 39.3;

}

关于c++ - 在 map 中包含 map 的结构? (C++/STL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2978844/

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