Получить размер qlist как размер структуры C++
Здравствуйте, как я могу получить размер моего собственного списка, например sizeof struct. Например, я знаю, как работает sizeof.
enum NETCDF_Type { NETCDF_NONE, //!< unknown data foramt NETCDF_STRING, NETCDF_UCHAR, //!< signed 1 byte integer NETCDF_CHAR, //!< signed 1 byte integer NETCDF_SHORT, //!< signed 2 byte integer NETCDF_INT, //!< signed 4 byte integer NETCDF_USHORT, //!< unsigned 2-byte int NETCDF_UINT, //!< unsigned 4-byte int NETCDF_FLOAT32, //!< signed 4-byte int NETCDF_DOUBLE64, //!< signed 8-byte int NETCDF_LONGLONG, NETCDF_ULONGLONG }; void getSize( const QList< NETCDF_Type > myList ) { for( int i = 0; i < myList.count(); i++ ) { //do something //I need a size of which NETCDF_Type i am using. //Without sizeof(); } }
Что я уже пробовал:
struct MyStruct { char v1; char v2; char v3; short v4; }; int mSize = sizeof( MyStruct ); mSize => 6; struct MyStruct { char v1; char v2; char v3; char v4; short v; }; int mSize = sizeof( MyStruct ); mSize => 6;
Jochen Arndt
Вы должны прояснить свой вопрос. Со списками обычно бывает два размера:
- Размер каждого элемента
- Количество элементов, фактически хранящихся в списке
Первый определяется типом элемента, а второй управляется списком (хранящимся в переменной-члене). Реализация списка обычно имеет функцию для доступа к переменной-члену, которая часто называется GetCount().
Большинство списков отслеживают также распределение в отдельной переменной. Но это представляет интерес только тогда, когда имеет значение использование памяти / производительность.
Sukerbek
Большое вам спасибо , я обновил свой вопрос, взгляните, пожалуйста.
Jochen Arndt
Это все еще неясно, потому что мы не знаем, какой размер вы хотите и почему вы не можете использовать sizeof().
Все, что Вы нам показали, - это перечисление. Это всего лишь int. Если вам нужен размер данных, которые описываются перечислением, вы должны показать нам соответствующие определения данных.
Для всех типов, кроме NETCDF_STRING, sizeof() будет выполнять эту работу:
NETCDF_LONGLONG : sizeof(long long)
Если вам нужны независимые от платформы размеры, вы должны использовать типы данных с фиксированной шириной, такие как int32_t вместо int.
Sukerbek
Большое вам спасибо, я решил свою проблему другим способом.