2017-05-08 75 views
-2

我明白,如果我想以發起與相同值的向量,我可以簡單地做如下如何在C++ 11中啓動具有相同值的向量向量?

vector<double> bcd= vector<double>(10,88); 

這將產生具有10個元素的向量,其中每一個是等於88

但是我怎樣才能啓動一個向量,所有元素都等於88?如

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

非常感謝!

回答

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

這浪費了一個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); 

做它沒有任何浪費。