我知道如何初始化一個默認值爲「val」的向量。如何初始化矢量數組?
vector <int> v(size,val);
但我想初始化矢量陣列,其中具有默認值「VAL」 .....,或者如果可能的不同值中的每個矢量。
聲明:
vector <int> v[10];
我知道如何初始化一個默認值爲「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