2017-04-14 2457 views

回答

2

假設你有:

std::vector<std::vector<int>> m(10, std::vector(20); 

m.size()將是10的std::vector<int> S IN m數量。
m[0].size()將是20,intm[0]

是相較於二維數組,如果您有:

int m[10][20]; 

sizeof(m)/sizeof(m[0])將是10,排在m數量。
sizeof(m[0])/sizeof(m[0][0])將爲20,列數爲m[0]

0

確切的含義如下。在C++中沒有真正的2D矢量,但有std::vector<T>包含std::vector<T>

如果你聲明一個載體std::vector<int> vec(10)你有一個包含10個元素的向量。所以vec.size()是10.

如果你聲明std::vector<std::vector<int>> vec(10, std::vector<int>(10))你有一個有10個元素的向量,每個元素包含一個包含10個元素的向量。因此vec[0]std::vector<int>類型。

如果你想知道這個向量(含義是vec[0])包含多少元素,你可以很容易地做到vec[0].size()

如果您想要計算元素的總數,則需要計算vec中包含的矢量數與每個這些矢量包含的元素數的乘積。因此vec.size()*vec[0].size()

讓斷定:

我們有std::vector<std::vector<int>> vec(10,std::vector<int>(10))

  • 數量的行(的std::vector<int>包含在vec數):vec.size()
  • 列數(包含在每個元素的數量std::vector<int>):vec[0].size()
  • 元素總數:vec.size()*vec[0].size()
相關問題