Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > QVector data()


Автор: Mormishka 5.10.2011, 20:57
Что больше знимает место в памяти QVector или массив такого же количества элементов?

Автор: JackYF 5.10.2011, 21:27
Mormishka, 

Напиши программу и проверь.

Автор: math64 5.10.2011, 21:59
Массив занимает меньше места, QVector содержит этот массив + дополнительные данные - посмотри в заголовок:
Код

template <typename T>
struct QVectorTypedData
{
    QBasicAtomicInt ref;
    int alloc;
    int size;
#if defined(QT_ARCH_SPARC) && defined(Q_CC_GNU) && defined(__LP64__) && defined(QT_BOOTSTRAPPED)
    // workaround for bug in gcc 3.4.2
    uint sharable;
    uint capacity;
#else
    uint sharable : 1;
    uint capacity : 1;
#endif
    T array[1]; // Здесь хранится сам массив, памяти выделено на alloc >= size элементов
};

template <typename T>
class QVector
{
    typedef QVectorTypedData<T> Data;
    union { QVectorData *p; QVectorTypedData<T> *d; };
    ...
};

Автор: newbee 5.10.2011, 23:13
Зато два одинаковых вектора будут занимать намного меньше места, чем два одинаковых массива.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)