我尝试将 100 000 个 QString 元素(每个 QString 包含大约 10 个字符)附加到 QVector。之后程序失败。QVector 可以包含多少元素是否有一些限制(当然除了物理内存限制)?此外,我认为 a 有很多可用内存,足以存储这么多字符串。我究竟做错了什么?
问问题
3404 次
3 回答
2
从文档。
QVector 类是一个提供动态数组的模板类...它将其项目存储在相邻的内存位置并提供基于索引的快速访问。
知道这一点附加大量元素的最佳方法是使用
QVector<QString> vector(100000);//or
vector.reserve(100000);
这样可以避免多次重定位内存。
于 2013-07-23T12:48:26.797 回答
1
尝试使用 QStringList 作为建议。我怀疑 100k 字符串会是内存问题。
QStringList tlist;
for(int i=0;i<100000;i++)
tlist.append("1234567890");
在我的环境中运行良好
于 2013-07-23T12:31:31.110 回答
0
当前版本的 QVector 的大小限制在 2 GB(2^31 字节)以下。
于 2020-05-19T20:39:21.630 回答