2017-05-08 9 views
-2

私は同じ値を持つベクトルを開始したい場合、私は単にC++ 11で同じ値のベクタのベクトルをどのように初期化できますか?

10個の要素を持つベクトルを生成する
vector<double> bcd= vector<double>(10,88); 

以下のように行うことができ、それらの各々が88

に等しいことを理解

しかし、すべての要素が88に等しいベクトルのベクトルをどのように開始できますか?

vector< vector<double> > abc = vector< vector<double> >(???, ???); 

ありがとうございました!

答えて

1
std::vector< std::vector<double> > abc(10, std::vector<double>(10,88)); 

これは1つだと思います。std::vector<double>(10,88)です。そしてコピーは、88でダブルスを直接初期化するよりも効率が悪いかもしれません。

template<class T, class...Args> 
std::vector<T> generate_vector(std::size_t count, Args&&...args) { 
    std::vector<T> r; 
    r.reserve(count); 
    for (std::size_t i = 1; i < count; ++i) 
    r.emplace_back(args...); 
    if (count) 
    r.emplace_back(std::forward<Args>(args)...); 
    return r; 
} 

その後、

auto abc = generate_vector<std::vector<double>>(10, 10, 88); 

は無駄なくそれをしません。

関連する問題