如何初始化矢量数组?
我知道如何初始化一个默认值为“val”的向量。如何初始化矢量数组?
vector <int> v(size,val);
但我想初始化矢量阵列,其中具有默认值“VAL” .....,或者如果可能的不同值中的每个矢量。
声明:
vector <int> v[10];
我知道了.... 存在另一种方式了。 创建具有默认值“VAL”给定大小的二维矢量:
int N, N;
// ...
vector< vector<int> > Matrix(N, vector<int>(M, VAL));
该矩阵效率非常低。嵌套矢量默认内存布局会影响性能。也就是说,如果是为了学习目的,这就够了。 – 2014-10-29 06:56:44
@GermánDiago真。事实上,这种矢量阵列在这方面已经非常低效。 – juanchopanza 2014-10-29 07:00:28
一个使用C++ 11,你不需要重复写矢量构造更宽泛的版本。它返回的std ::阵列
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
正确, :) – 2014-10-29 08:42:31
你在用什么语言? – 2014-10-29 06:33:35
@ Adam Smith C++ – unlucy7735 2014-10-29 06:34:34
'vector v [10] = { {1,2,3}, {4,5,6},/ *其余*/ };'? –
Niall
2014-10-29 06:39:48