2

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

4

3 回答 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

来自Qt 5.14.2 的 QVector 文档

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

于 2020-05-19T20:39:21.630 回答