繁体   English   中英

如何使用 QVector?

[英]How to use a QVector?

假设我有一个 class 和以下成员

QVector<bool> m_vector;

然后在构造函数上我可以做

m_vector.resize(SIZE);
for (int i = 0; i < SIZE; ++i)
    m_vector[i] = false;

或(更短)

m_vector = QVector(SIZE, false);

越短越短越好? 或者评估操作员告诉我有一个(不必要的)副本正在进行,我应该更喜欢非较短的方法?

两种方法都可以正常工作,但首选第二种/更短的方法,因为它需要的代码更少,因此出错的机会更少。 至于性能,“不必要的副本”几乎肯定会被实现为构造和移动而不是副本(因为QVector(SIZE, false)是一个右值),这意味着它的效率并不比您的第一个示例低很多。 特别是,SIZE 元素数组将从临时QVector object 中窃取,并交给m_vector采用,而不是被(创建、复制然后销毁)。

也就是说,最好的方法是在类构造函数的初始化列表中初始化m_vector object,如下所示:

MyClass :: MyClass()
    : m_vector(SIZE, false)
{
}

...这样,调整大小/默认填充是作为m_vector原始构造的一部分完成的,而不是作为一个单独的步骤。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM