Это - хорошая практика для использования size_t в C++?

В Windows я использовал Визуальный Детектор Утечки . Интегрируется с VC ++, простой в использовании (просто включают заголовок и устанавливают LIB для нахождения lib), открытый исходный код, бесплатный использовать FTW.

13
задан jalf 11 July 2009 в 16:12
поделиться

8 ответов

size_t может иметь размер, отличный от int .

Для вещей как количество сотрудников и т. д., эта разница обычно несущественна; как часто у вас работает более 2 ^ 32 сотрудников? Однако, если вы используете поле для представления размера файла, вы захотите использовать size_t вместо int , если ваша файловая система поддерживает 64-битные файлы.

Помните, что этот объект размеры (полученные с помощью sizeof ) имеют тип size_t , а не int или unsigned int ; также, соответственно, существует ptrdiff_t для разницы между двумя указателями (например, &

14
ответ дан 1 December 2019 в 20:31
поделиться

В вашем случае не используйте ни один из них. Либо используйте контейнер и итераторы, либо создайте новый тип данных (например, базу данных сотрудников), который предлагает доступ к итератору / диапазону.

Что касается неподписанного, Бьярн Страуструп написал на TCPL:

Целочисленные типы без знака идеально подходят для использования, которое обрабатывает место хранения как битовый массив. Использование unsigned вместо int для получения еще один бит для представления положительных целых чисел почти никогда не годится идея. Попытки обеспечить положительность некоторых значений путем объявления переменные без знака обычно будут побеждены неявным правила конвертации.

7
ответ дан 1 December 2019 в 20:31
поделиться

Вы всегда можете использовать такие вещи, как

employeeList.size();

или

EmployeeList::size_type i = 0;

или

EmployeeNumber number = employee.getNumber();

Я имею в виду, инкапсулируйте целые числа и другие подобные типы, если только это не какие-то внутренние вычисления или алгоритм.

2
ответ дан 1 December 2019 в 20:31
поделиться

Использование size_t во многих ситуациях помогает с переносимостью. size_t не всегда "unsigned int", но это всегда размер, который может представлять максимально возможный объект на данной платформе. Например, некоторые платформы имеют 16-битный целочисленный размер, но используют 32-битные указатели. В этом случае, если вы используете unsigned int для размера чего-либо, вы ограничите его 65 536 байтами (или другими элементами), даже если платформа может обрабатывать что-то намного большее.

В вашем примере я, вероятно, использовал бы typedef для 32-битное или 64-битное целое число без знака вместо использования int, unsigned int или size_t.

7
ответ дан 1 December 2019 в 20:31
поделиться

size_t специально предназначен для указания размера памяти (в байтах) для значения. Это тип выражений sizeof.

Вы должны использовать только size_t для этой цели, для других вещей вы должны использовать int или определять свой собственный тип.

См. Также Wikipedia .

1
ответ дан 1 December 2019 в 20:31
поделиться

Я не профессионал, но я использую size_t только для размеров памяти, чтобы улучшить читаемость кода. Во всех остальных случаях я использую unsigned int (или что-нибудь еще).

0
ответ дан 1 December 2019 в 20:31
поделиться

Вы не хотите использовать в этом случае простой int, потому что количество сотрудников никогда не бывает отрицательным, и вы хотите, чтобы ваш компилятор помог вам обеспечить соблюдение этого правила, верно?

-1
ответ дан 1 December 2019 в 20:31
поделиться

В этом случае я бы использовал unsigned int или int . size_t , похоже, в первую очередь для представления размера структур данных. По идее, хотя в некоторых случаях количество сотрудников может быть равным размеру структуры данных, это не обязательно; это может быть просто счет. Поэтому я бы использовал int , но, вероятно, не стал бы слишком настаивать на этом.

0
ответ дан 1 December 2019 в 20:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: