Название: Re: [Решено]Красиво узнать размер Qt-контейнера (с простыми типами) в байтах Отправлено: kuzulis от Июль 04, 2014, 11:56 Всем доброго времени.
Например, есть задача получить размер любого контейнера в байтах. Условие: контейнеры могут принимать только простые типы (char, int, wchar_t, и пр.). Но проблема в том, что у контейнеров (QVector, QVarLengthArray) нет такого метода. По-простому это делается так: Код
но это как-то некошерно каждый раз писать такое.. Думал на шаблонах смастерить некоторую ф-ю которая бы автоматом считала размер контейнера в байтах, набросал вот это: Код
вроде работает, но ругается так: Цитировать e:\git\ng\123\typeof\ttt.h(7) : warning C4189: 'datatype' : local variable is initialized but not referenced ..\typeof\main.cpp(13) : see reference to function template instantiation 'qint64 qtContainerSize<QVector<T>>(const QVector<T> &)' being compiled with [ T=int ] Есть ли возможность как-то красиво это реализовать? :) Название: Re: Красиво узнать размер Qt-контейнера в байтах Отправлено: Igors от Июль 04, 2014, 12:22 По-простому это делается так: Та ну, такой размер очень далек от реального, возможно в неск раз. Напр вектор распределяет пул, правильно v.capacity() * sizeof(int); Др контейнеры вместе с данными хранят "обвязки", напр размер эл-та QHashКод
sizeof(key) + sizeof(value) + sizeof(uint32) + sizeof(void *) * 2 +... // может чего-о упустил Есть ли возможность как-то красиво это реализовать? :) К сожалению - нетНазвание: Re: Красиво узнать размер Qt-контейнера в байтах Отправлено: alex312 от Июль 04, 2014, 12:30 Есть ли возможность как-то красиво это реализовать? :) Обычный способ подавить сообщение о неиспользовании переменной - это привести ее к voidКод
И еще, а зачем обьявлять переменную, если sizeof можно применять и к типу. Код
Название: Re: Красиво узнать размер Qt-контейнера в байтах Отправлено: kambala от Июль 04, 2014, 12:39 Q_UNUSED уж лучше тогда
Название: Re: Красиво узнать размер Qt-контейнера в байтах Отправлено: kuzulis от Июль 04, 2014, 13:28 Цитата: alex312 И еще, а зачем обьявлять переменную, если sizeof можно применять и к типу. Ах, спасибо.. :) Цитата: Igors Та ну, такой размер очень далек от реального, возможно в неск раз. Это понятно. Имелся ввиду размер используемых элементов в байтах. :) Название: Re: [Решено]Красиво узнать размер Qt-контейнера в байтах Отправлено: m_ax от Июль 04, 2014, 14:13 Цитировать Это понятно. Имелся ввиду размер используемых элементов в байтах. :) А если в контейнере указатели? Или, например, QString? Название: Re: [Решено]Красиво узнать размер Qt-контейнера (с простыми типами) в байтах Отправлено: kuzulis от Июль 04, 2014, 14:30 Эмм.. таки да. ::)
Но у меня нет такой общей задачи. У меня в контейнерах могут быть только простые типы (изменил наименование темы). |