【问题标题】:Is there a maximum size for QVector?QVector 有最大尺寸吗?
【发布时间】:2013-07-23 11:59:16
【问题描述】:

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

【问题讨论】:

  • 元素个数限制在 int 的范围内,(约 20 亿)。您的问题将是您放入其中的内容的大小。或者在复制您放入其中的内容时遇到问题。
  • 你能展示一个失败的代码的最小例子吗?顺便说一句,QList is usually recommended over the QVector.
  • 显示代码,避免猜测。顺便说一句,更详细地解释您观察到的故障类型

标签: qt qvector


【解决方案1】:

来自文档。

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

了解这一点,追加大量元素的最佳方法是使用

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

这样可以避免多次重定位内存。

【讨论】:

    【解决方案2】:

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

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

    在我的环境中运行良好

    【讨论】:

      【解决方案3】:

      来自QVector documentation for Qt 5.14.2:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-27
        相关资源
        最近更新 更多