首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用QVector?

如何使用QVector?
EN

Stack Overflow用户
提问于 2021-02-14 13:46:24
回答 1查看 70关注 0票数 1

假设我有一个包含以下成员的类

代码语言:javascript
复制
QVector<bool> m_vector;

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

代码语言:javascript
复制
m_vector.resize(SIZE);
for (int i = 0; i < SIZE; ++i)
    m_vector[i] = false;

或(更短)

代码语言:javascript
复制
m_vector = QVector(SIZE, false);

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-14 13:52:50

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

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

代码语言:javascript
复制
MyClass :: MyClass()
    : m_vector(SIZE, false)
{
}

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66192781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档