簡體   English   中英

將嵌套的初始化列表保存為向量構造的變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM