【发布时间】:2014-11-13 07:49:41
【问题描述】:
随着编程变得越来越复杂,对结构数据执行操作的需求变得显而易见。是否有将结构类型转换为其成员数组的转换方法:
struct FooDesc Foo{
int num_Foo;
int num_Bar;
int GreenFoo;
};
可以表示为:
int Bar[2];
或者更好,动态为:
vector<int> Bar;
目标是将数据结构转换或重新表示为可迭代的形式,而无需过度使用赋值运算符。
【问题讨论】:
-
为什么不在结构中保存一个数组?
-
int Bar[2]- 没有。int Bar[3]- 是的。 -
@juanchopanza 实际的实现承载了数量惊人的成员,这些成员定义了要写入文件的项目的属性。我害怕为我的眼睛创建一堆无法读取的数据。但我也希望能够附加“特殊”属性。
-
使用
vector<int>,您必须将其复制到向量中以进行“序列化”操作,并从向量中复制回结构中以进行“正常”操作。您可以将结构的地址转换为int*,然后使用该指针来执行您的“序列化”操作,这将直接影响结构。顺便说一句,“没有过度使用赋值运算符”是什么意思?无论您如何表示此结构,您都必须使用相同数量的分配。老实说,您在这里的目的非常模糊。 -
这看起来更像是
std::tuple的应用程序,它与可变参数模板联系在一起,用于编译时动态操作。您可能需要添加一个函数来将相关结构转换为std::tuple。
标签: c++ arrays vector struct std