【问题标题】:How to initialize an array of vector?如何初始化向量数组?
【发布时间】:2014-10-29 06:30:47
【问题描述】:

我知道如何初始化具有默认值“val”的向量。

vector <int> v(size,val);

但我想初始化 一个向量数组,其中每个向量都有一个默认值“val”.....或者如果可能的话,可以使用不同的值。

声明:

vector <int> v[10];

【问题讨论】:

标签: c++ vector


【解决方案1】:

我明白了…… 还有另一种方法。 创建具有默认值“VAL”的给定大小的二维向量:

int N, N; 
// ... 
vector< vector<int> > Matrix(N, vector<int>(M, VAL));

【讨论】:

  • 那个矩阵效率极低。嵌套向量默认内存布局会损害性能。也就是说,如果是为了学习目的,那就足够了。
  • @GermánDiago 是的。实际上,向量数组在这方面已经非常低效了。
【解决方案2】:

使用 c++11 的更通用版本,您无需重复编写向量构造函数。它返回一个 std::array

template <unsigned N>
auto make_array_of_vecs(std::size_t size, int val) {
   std::array<std::vector<int>, std::index_sequence<I...>::size()> arr;
   std::fill(begin(arr), end(arr), std::vector<int>(size, val));

   return arr;
 }

使用方法:

auto array_of_vecs = make_array_of_vecs<10>(15, 10);

警告:未经测试。

【讨论】:

  • 你必须使用I 让编译器扩展...,类似于return {{ (I, std::vector&lt;int&gt;(size, val))... }};
猜你喜欢
  • 2022-12-31
  • 1970-01-01
  • 1970-01-01
  • 2011-05-15
  • 1970-01-01
  • 2018-09-22
  • 2011-05-18
  • 1970-01-01
  • 2015-01-05
相关资源
最近更新 更多