QVector有最大尺寸吗?

时间:2013-07-23 11:59:16

标签: qt qvector

我试图将100 000个QString元素(每个QString中包含大约10个字符)附加到QVector。之后程序失败了。 QVector可以包含多少元素是否存在一些限制(当然除了物理内存限制外)?此外,我认为有很多可用内存,足以存储这么多字符串。我做错了什么?

3 个答案:

答案 0 :(得分:2)

来自文档。

  

QVector类是一个提供动态数组的模板类......   它将其项目存储在相邻的内存位置并快速提供   基于索引的访问。

知道附加大量元素的最佳方法是使用

保留内存
QVector<QString> vector(100000);//or 
vector.reserve(100000);

这可以避免重新定位几次内存。

答案 1 :(得分:1)

尝试使用QStringList作为建议。我怀疑100k字符串会是一个内存问题。

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

在我的环境中完全运行

答案 2 :(得分:0)

来自QVector documentation for Qt 5.14.2

当前版本的QVector的大小被限制在2 GB(2 ^ 31字节)以下。