我有主
QStack<TypeFoo*> MainStack
现在我有来自不同对象的方法输出
QVector<TypeFoo*> OutPutVec
我喜欢将 OutPutVec 的元素添加到 MainStack 而不循环,如果堆栈将它们添加到底部,最好的方法是什么?我需要将我的 OutPutVec 转换为 QStack 吗?
这比循环好又快吗?
QVector<T> & QVector::operator+= ( const QVector<T> & other )
通常,我使用运算符<<
来附加容器。您可以选择其中一种变体。
这是运营商的实现+=
template <typename T>
QVector<T> &QVector<T>::operator+=(const QVector &l)
{
int newSize = d->size + l.d->size;
realloc(d->size, newSize);
T *w = p->array + newSize;
T *i = l.p->array + l.d->size;
T *b = l.p->array;
while (i != b) {
if (QTypeInfo<T>::isComplex)
new (--w) T(*--i);
else
*--w = *--i;
}
d->size = newSize;
return *this;
}
以及算子的实现<<
inline QVector<T> &operator<<(const QVector<T> &l)
{ *this += l; return *this; }
PS。如果您可以使用 Qt“buns”,那么创建一个循环来复制数据是没有意义的。Qt 更快地追加数据,然后是你的循环
PSS。如果您阅读助手,您可能会发现 QStack 是从 QVector 继承的。