Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Тип данных C++

Тимофей Сарманов Ученик (19), на голосовании 4 месяца назад
Можно ли создать тип данных, который начинается не с нуля, а, например, от 10^18(чтобы не тратить память на значения до)
Голосование за лучший ответ
3681 Просветленный (20671) 5 месяцев назад
Нельзя. Но можно, к примеру, создать класс или структуру, которая хранит внутри себя значение нужного типа (например, unsigned long long int для 10^18). В конструкторе инициализировать значение 10^18. И перезагрузить операторы (например, +, -, *, /, ==, !=, <<, >>) для работы с внутренним значением, сдвигая его на 10^18. Или хранить данные в обычном типе (например, unsigned long long int). При выполнении операций просто вычитать 10^18 перед использованием значения и прибавлять обратно при сохранении. Но ни один из этих подходов не экономит память напрямую. Они лишь позволяют работать с числами, как если бы они начинались с 10^18. Если цель — именно экономия памяти, то необходимо использовать другие структуры данных, оптимизированные для хранения больших чисел с определенными ограничениями (например, библиотека GMP для работы с числами произвольной точности).
Похожие вопросы