[英]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.