[英]Saving a nested initializer list as a variable for vector construction
我目前正在初始化一个这样的向量:
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()};
还有其他更短/更好的方法可以做到这一点吗?
你为什么要弄乱初始化列表? 只需复制一个向量:
const std::vector<Foo> default_vec{{1, 2}, {2, 3}};
std::vector<Foo> foo_vec{default_vec};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.