2013-07-23 191 views
1

我試圖追加100 000個QString元素(每個QString有大約10個字符)到QVector。之後,程序失敗。 QVector可以包含多少個元素(當然除了物理內存限制)還有一些限制嗎?另外,我覺得有很多可用的內存,足以存儲這樣的一串字符串。我究竟做錯了什麼?QVector有最大尺寸嗎?

+1

元素的數量限於int的限制(約20億)。你的問題將與你所投入的大小有關。或者有些問題正在複製你正在放入的內容。 – paulm

+1

你能展示一個失敗代碼的最小例子嗎?順便說一句,[QList通常建議通過QVector](http://qt-project.org/doc/qt-5.0/qtcore/containers.html#the-container-classes)。 – 2013-07-23 12:12:10

+0

顯示代碼,避免猜測。順便說一句,更詳細地解釋你觀察到的失敗類型 – UmNyobe

回答

1

嘗試使用QStringList作爲建議。我懷疑一個100k的字符串會成爲一個內存問題。

QStringList tlist; 
for(int i=0;i<100000;i++) 
    tlist.append("1234567890"); 

運行我的環境

2

從文檔中完全罰款。

的QVector類是一個模板類,它提供一個動態數組... 它存儲在其相鄰的存儲位置的項目,並提供快速 基於索引的訪問。

此知道要追加大量元件的最好的方法是使用

QVector<QString> vector(100000);//or 
vector.reserve(100000); 

這避免了重新定位幾次所述存儲器中的保留存儲器要麼。