0

在我写 z.size() 时的第一个 for 循环中,我得到

Qt 已捕获从事件处理程序抛出的异常。Qt 不支持从事件处理程序中抛出异常。您必须重新实现 QApplication::notify() 并在那里捕获所有异常。

当我写 z.size 时,我得到了 10 个输出,但 z 的大小为 5,如您所见。出了什么问题。前 5 个输出为 0,然后休息是正常的,如 0 1 2 3 4 但我应该有 5 个输出我错了吗

QVector<int> z(5);
for(int i=0;i<5;i++)
    z.push_back(i);
QString str;
for (int i = 0; i < z.size(); ++i)
{
    if (i > 0)
        str += " ";
    str += QString::number(z[i]);
}
ui->mbox->setText(str);

}  
4

2 回答 2

1

当您创建 QVector z 时,您将初始大小设为 5。这意味着该向量包含 5 个零。然后再添加五个整数,从 0 到 4。解决方法是更改

QVector<int> z(5);

QVector<int> z;

大多数情况下,QVector 并不是最好的容器,通常 QList 要好得多。来自 Qt 的文档:

对于大多数用途,QList 是正确使用的类。它的基于索引的 API 比 QLinkedList 的基于迭代器的 API 更方便,并且通常比 QVector 更快,因为它在内存中存储项目的方式。它还扩展到您的可执行文件中的更少代码。

于 2013-05-19T10:13:53.863 回答
0
for(int i=0;i<5;i++)
z.push_back(i);

您刚刚在数组中添加了 5 个元素。

于 2013-05-19T10:13:29.933 回答