C++ 将STL映射转换为结构

C++ 将STL映射转换为结构,c++,stl,map,struct,C++,Stl,Map,Struct,我有一个std::map,它的成员看起来像: X = [{"N", 200}, {"sigma", 1.0}, {"T", .2}] if("N" in X) -> Y.N = X["N"]; if("T" in X) -> Y.T = X["T"]; 现在,给定结构foo Y: 是否可以通过编程方式映射键/值对X->Y,而无需为每个X->Y类型映射编写自定义类?请注意: X[sigma]不在Y中,即映射不一定是一对一的 Y.N的类型是int,而X[N]是double。 我怀疑答

我有一个std::map,它的成员看起来像:

X = [{"N", 200}, {"sigma", 1.0}, {"T", .2}]
if("N" in X) -> Y.N = X["N"];
if("T" in X) -> Y.T = X["T"];
现在,给定结构foo Y:

是否可以通过编程方式映射键/值对X->Y,而无需为每个X->Y类型映射编写自定义类?请注意:

X[sigma]不在Y中,即映射不一定是一对一的 Y.N的类型是int,而X[N]是double。 我怀疑答案是否定的,除非在编译时进行了一些欺骗

编辑:可能不清楚我在找什么。此示例的伪代码版本如下所示:

X = [{"N", 200}, {"sigma", 1.0}, {"T", .2}]
if("N" in X) -> Y.N = X["N"];
if("T" in X) -> Y.T = X["T"];
或以编程方式:

for key in Y:
    if (key in X) -> Y.key = X[key]

不,C++没有反射的概念。在编译时,不再有foo::N字符串。编译器已将源代码中所有出现的foo::N转换为foo对象中的0字节偏移量。此外,在编译时不能枚举类成员。

< P> NO.C++没有反射的概念。在编译时,不再有foo::N字符串。编译器已将源代码中所有出现的foo::N转换为foo对象中的0字节偏移量。此外,您不能在编译时枚举类成员。

您希望根据映射元素中键的值(字符串)在结构类型的对象中设置字段。因此,不,它不能在编译时完成。

您希望在结构类型的对象中根据映射元素中键的值(字符串)设置字段。因此,不,它不能在编译时完成。

您的问题不清楚您希望如何进行映射。您的问题不清楚您希望如何进行映射。