2015-07-03 194 views
1

我試圖使用矢量的矢量在C++作爲2D陣列。我必須從用戶那裏讀取輸入。行和列的數量也由用戶輸入。初始化矢量矢量的C++

Supose我讀m * n個矩陣,

我嘗試使用儲備(m * n個)來分配空間,但在建築物也給錯誤。

這是我面對的一個普遍問題,我的意思是即使在字符串中,您通過字符讀取char,如何提供空間以便您可以訪問索引i(我知道可以使用.resize(given_size)來完成)但在情況下它不知道有多少個字符,用戶將輸入的,這個不能做(這可以使用+運算符來規避,但它仍然不是一個直接的解決方案)。因此,我的主要問題是如何初始化矢量向量(不是放入值,而是分配所需的空間,行和列),以便我可以訪問[i] [j]以讀取它的值?

我知道矩陣可以使用像here向量的向量來構建,但我想首先聲明矢量的矢量,然後採取的行和列的輸入來分配空間,使得我可以訪問[i] [j]輸入元素。

+0

只是做一個'vec.resize(米)'在外矢量和'對(INT I = 0; I <米; ++ⅰ)vec的[I] .resize(N);'來調整內部向量。我不明白'resize'和字符串有什麼問題,但是最好還是留下一個問題。 –

+0

除非在那裏已經有值,否則你不能訪問'[i] [j]'。所以你的要求有些矛盾。但我認爲重複回答你的問題。 – juanchopanza

+0

@juanchopanza不,沒有PLZ刪除重複的標籤。那裏的矢量已經使用row參數定義了。我不想這樣做。 – adrian008

回答

2

std::vector<std::vector<T>> my_vec(m, std::vector<T>(n))

要小心,T的默認構造函數被調用每一個矩陣的m * n成員。