Я изучаю С++. Предполагается, что один из элементов данных моих классов имеет тип size_t. Теперь size_t - это не встроенный примитивный тип, а скорее определенный тип (как беззнаковое значение, которое обычно не меньше целого числа), который активно используется во всем C++.
Многие библиотеки C++, такие как iostream или string, автоматически добавят size_t к вашей текущей области.
Однако моему классу не нужно включать какие-либо причудливые библиотеки. Поскольку я хочу, чтобы он был как можно более компактным, я хочу включить только файл, отвечающий за создание size_t.
Какая это библиотека?
Ответ 2 · рейтинг 4 · Cheers and hth. - Alf
size_t определяется <stddef.h> как в C++, так и в C.
В C++ вы также можете включить <cstddef>, а затем написать std::size_t. Обычный size_t может компилироваться или нет, но его доступность с этим заголовком не гарантируется. Тем не менее, я не рекомендую это, так как это не имеет никаких преимуществ и имеет проблему, заключающуюся в том, что если вы забудете std:: или его нет в другом включенном коде, код может не скомпилироваться каким-либо другим компилятором.
Из-за проблем с неявным преобразованием в беззнаковый общий тип в выражениях рассмотрите возможность использования знакового ptrdiff_t вместо size_t, за исключением параметров шаблона. Исключением является то, что по крайней мере у одного широко используемого компилятора есть проблемы с сопоставлением параметра шаблона, отличного от size_t, например. необработанный размер массива.