初始化包含vector的结构

Mav*_*rik 9 c++ struct

我正在寻找一种初始化复杂结构的方法,该结构在一行中包含向量.

例如,如果我有这个结构:

struct A{
  double x;
  double y;
};
struct B{
  double z;
  double W;
};
struct C{
  A a;
  B b;
};
Run Code Online (Sandbox Code Playgroud)

我可以用这种方式初始化C: C c = {{0.0,0.1},{1.0,1.1}};

但是如果我必须初始化这样的结构呢?

struct A{
  double x;
  double y;
};
struct B{
  vector<double> values;
};
struct C{
  A a;
  B b;
};
Run Code Online (Sandbox Code Playgroud)

我必须在一行中完成它,因为我想允许我的应用程序的用户在单个字段中指定所有初始值.当然,我更喜欢采用标准方式来做而不是自定义方式.

谢谢!

Man*_*rse 10

您可以C在C++中以非常类似的方式初始化为C:

C c = {{0.3, 0.01}, {{14.2, 18.1, 0.0, 3.2}}};
Run Code Online (Sandbox Code Playgroud)

  • 只要您的编译器支持C++ 11初始化语法. (5认同)
  • @MikeSeymour - 由于问题没有指定编译器,我假设OP正在询问标准规定的关于C++的问题. (3认同)
  • @Mankarse:很公平,但是指定它只是C++ 11可能是个好主意; 没有编译器完全支持新标准. (2认同)
  • @lucaghera:要了解编译器的C++版本,请参阅编译器的文档(对于GCC和Clang,您需要传递`-std = c ++ 0x`才能启用C++ 11功能).没有编译器完全支持整个C++ 11.如果B是`struct B {vector <A> values;};`那么初始化看起来仍然非常相似:`C c {{1.1,3.2},{{{{{{{{{{{{{{{{{{{{{{动态扩展计划} ;`. (2认同)