如何在 C++11 中启动具有相同值的向量的向量

How can I initiate vector of vectors with the same value in C++11?

本文关键字:向量 C++11 启动      更新时间:2023-10-16

我知道,如果我想启动一个具有相同值的向量,我可以简单地执行以下操作

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

这将生成一个包含 10 个元素的向量,每个元素等于 88。

但是我怎样才能启动一个所有元素都等于 88 的向量?

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

非常感谢!

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 );

没有任何浪费。