我有主要的
QStack<TypeFoo*> MainStack
现在我有来自不同对象的方法输出
QVector<TypeFoo*> OutPutVec
我想将OutPutVec的元素添加到MainStack而不进行循环,只需将它们添加到底部(如果是堆栈),最好的方法是什么?我需要转换我的OutPutVec 到QStack?
这是好又快的循环吗?
QVector<T> & QVector::operator+= ( const QVector<T> & other )
答案 0 :(得分:3)
QStack继承QVector,QVector具有以下定义:
QVector&amp;运营商LT;&LT; (const QVector&amp; other)
因此你应该能够简单地做到
MainStack << OutPutVec;
答案 1 :(得分:0)
通常,我使用operator <<
作为追加容器。
您可以选择其中一种变体。
这是运营商+=
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“包子”,创建一个复制数据的循环是没有意义的。 Qt更快地附加数据,然后是你的循环
PSS。如果您阅读助手,您可能会发现QStack继承自QVector。