2014-02-14 65 views
-1

只是一個隨機問題,我碰到。想知道QVector尺寸

如果我打電話myQVector[121]QVector中沒有任何項目,它在QVector創建121空間,否則只能創建一個名爲在它121的空間?

我想知道,因爲我正在爲我的CD創建一個庫(需要一個項目來學習),並且我想讓這個載體成爲多張CD專輯的可能。

我是什麼意思

QVector myQVector; 

myQVector[121] = "song number 1 on cd 1"; 
myQVector[122] = "song number 2 on cd 1"; 
myQVector[211] = "song number 1 on cd 2"; 
myQVector[322] = "song number 22 on cd 3"; 
+0

是文檔關閉還是什麼? http://qt-project.org/doc/qt-5.0/qtcore/qvector.html – juanchopanza

+0

你真的覺得我沒有看過?我沒有找到anwser,這就是爲什麼我問...無論如何。其他人得到了答案? – Chax

+0

答案在上面我剛剛鏈接的文檔中。 – juanchopanza

回答

0

QVector documentation

QVector myQVector; 

default constructor構造一個QVector

myQVector[121] = .... 

operator[](int(i)具有條件

i必須在向量(即,0 <= i < size())有效的索引位置。

所以叫myQVector[121]不符合條件。

你可能想看看QMap,std::mapstd::unordered_map

+0

謝謝你的答案。所以我想我會用QVector做一個QVector。我真的很感激幫助。對不起,打擾你的問題。順便說一句,我會投票給你的anwser,但有人倒我的問題... – Chax

+0

@Chax很高興它幫助。看看我在答案末尾添加的地圖類型。他們*可能*更適合您的需求。 – juanchopanza

0

不,它不會自動增加QVector的大小(項目數量)。相反,您的應用程序會崩潰,因爲您嘗試訪問無效的索引。

但是,列表/向量在這裏似乎不是正確的數據結構。我相信,你真正想要的是一個QMap,你可以在其中爲一個鍵分配一個值:

myMap[songId] = "song number 1 on cd 1"; 
+0

我會馬上去看看,謝謝 – Chax