[英]QVector<QVector<>> size
我想知道QVector<QVector<type>>
的对象中的QVector<QVector<type>>
,例如myobject
。 一种方法是如下设置一个for循环:
int siz;
QVector<type> temp;
for(int i=0; i<myobject.size(); i++)
{
temp = myobject[i];
for(int j=0; j<temp.size(); j++)
{
siz += temp.size();
}
}
虽然可行,但我觉得这样很麻烦。 是否有其他更有效或更整洁的方法来估计QVector<QVector<type>>
的大小
您发布的代码中使用的逻辑不正确。
temp = myobject[i];
for(int j=0; j<temp.size(); j++)
{
siz += temp.size();
}
将temp
的大小添加到siz
太多次。 它需要添加到siz
只有一次。
你需要:
int siz = 0;
for(int i=0; i<myobject.size(); i++)
{
siz += myobject.at(i).size();
}
正如@Mike指出的那样,使用myobject[i]
可能会导致深度复制。 对于只读访问,请使用myobject.at(i)
。
从文档中 :
at()
可以比operator[]()
更快,因为它永远不会导致深度复制的发生。
除了R Sahu的回答之外,我只想指出,在外循环的每次迭代中,您都会获得内部QVector
对象的免费副本。 您可能想要获取对内部向量的const引用。
另一种方法是使用std::accumulate
算法,即:
int wholeSize = std::accumulate(m.cbegin(), m.cend(), 0,
[](int currentSize, const QVector<type> &v) {
return currentSize + v.size();
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.