c++ - 将嵌套初始化器列表保存为向量构造的变量

我目前正在初始化这样的向量:

struct Foo{
  Foo(double a, double b){
    a_ = a;
    b_ = b;
  };
  double a_;
  double b_;
};

std::vector<Foo> foo_vec{{1, 2}, {2, 3}};

这正确地构造了一个具有两个已初始化元素的向量。我想将此初始化拉到一个 const 全局变量中,因为我对不同的向量多次使用相同的变量。我试过这个:

// this fails to compile: result type must be constructible from value type of input range
const std::array<std::initializer_list<double>, 2> bar = {{{1, 2}, {2, 3}}};
std::vector<Foo> foo_vec{bar.begin(), bar.end()};

// this works
const std::array<Foo, 2> bar = {{{1, 2}, {2, 3}}};
std::vector<Foo> foo_vec{bar.begin(), bar.end()};

有没有其他更短/更好的方法来做到这一点,或者就是这样?

回答1

你为什么要搞乱初始化列表?只需复制一个向量:

const std::vector<Foo> default_vec{{1, 2}, {2, 3}};
std::vector<Foo> foo_vec{default_vec};

相似文章

scala - 多个列表的组合 (Scala)

我正在尝试编写一个函数,该函数将多个列表作为输入并返回这些列表之间每个组合的字符串表示形式。样本输入:valintegers=List(1,2,3,4)valcharacters=List('a','...