Ras*_*lis 2 c++ arrays struct vector std
随着编程变得更加复杂,对结构数据执行操作的需求变得可见。是否有将结构类型转换为其成员数组的转换方法,以便:
struct FooDesc Foo{
int num_Foo;
int num_Bar;
int GreenFoo;
};
Run Code Online (Sandbox Code Playgroud)
可以表示为:
int Bar[2];
Run Code Online (Sandbox Code Playgroud)
或者更好,动态为:
vector<int> Bar;
Run Code Online (Sandbox Code Playgroud)
目标是将数据结构转换或重新表示为可迭代形式,而不过度使用赋值运算符。
您可以使用未命名的structs 来创建一个混合体struct,其中它的成员可以被视为一个数组:
struct Foo {
union {
struct {
int x;
int y;
int z;
};
struct {
int array[3];
};
};
};
Run Code Online (Sandbox Code Playgroud)
但是请注意,unnamedstruct来自 C11 并且它不是标准的 C++ 功能。尽管 GCC 和 Clang 支持它作为扩展。