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