Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 [2]  Все   Вниз
  Печать  
Автор Тема: Класс сверхбольших целых чисел  (Прочитано 38671 раз)
0 Пользователей и 7 Гостей смотрят эту тему.
Dr.Yevhenius
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #30 : 29-05-2010 15:21 » 

Это правило или совет?
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #31 : 29-05-2010 15:23 » 

скорее правило )) Почему-то не желает иначе линковаться
Записан

Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #32 : 29-05-2010 15:39 » 

Это правило, пока компиляторы не научились поддерживать экспорт реализаций шаблонов.
Если немного поразмыслить о том, как реализуется инстанцирование шаблонов, то мотивация существующего решения достаточно очевидна.
Как, впрочем, и явный экспорт определения шаблона, предписываемый стандартом.
Записан
Dr.Yevhenius
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #33 : 29-05-2010 18:19 » 

Пречитав еще раз 13 ответ, а именно
дык, массив тебе нужен
хочу сказать, что я и не собирался использовать __int64 для хранения данных, если ты об этом. Он мне нужен был для только вывода хранимого числа, хотя даже так идея неподходящая.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #34 : 30-05-2010 06:31 » 

__int64 - это массив из 8 байтов. Разница невеликая Улыбаюсь

кстати, из BCD формата выводить на экран тоже проще всего будет
« Последнее редактирование: 30-05-2010 06:36 от Алексей1153++ » Записан

RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #35 : 30-05-2010 07:40 » 

Леш, зато арифметика BCD сложнее и много медленней. Например, команды x86 для коррекции BCD после арифметических операций работают всего с одним нибблом.
Я  как-то разбирался с форматом DECIMAL в MySQL (может хранить до 65-и знаков) и нашел, что там каждые 4 десятичных знака кодируются как 2-х байтовое двоичное целое (unsigned short). Думаю, что такой выбор сделан не с проста.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dr.Yevhenius
Опытный

ua
Offline Offline
Пол: Мужской

« Ответ #36 : 30-05-2010 09:52 » 

__int64 - это массив из 8 байтов. Разница невеликая Улыбаюсь
Ради 8 байтов я буду исполизовать __int64 Улыбаюсь

BCD-формат - это хранение в каждом байте числа от 0 до 9, я правильно понимаю?
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #37 : 30-05-2010 09:56 » new

YevhenUA, не в байте, а в ниббле (4 бита). В остальном - правильно.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #38 : 30-05-2010 11:40 » 

если хранить в одном байте одну цифру, будет шустро Улыбаюсь
Записан

RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #39 : 30-05-2010 14:53 » 

Заглянул в заголовки библиотеки GMP (библиотека больших чисел): для хранения используется либо 32-, либо 64-битные целые.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #40 : 31-05-2010 03:47 » 

Лично мне нравится формат используемый в Oracle
http://my-oracle.it-blogs.com.ua/post-272.aspx
http://www.oracle.com/global/ru/oramag/julyaugust2002/admin_number.html

Что же касается шаблонов, то тут всё просто, т.к. не было определения функций(конструктора и деструктора в данном случае) в заголовочном файле, то компилятор резонно предположил, что ему предоставят тела методов на этапе линковки, но тела методов создаются при инстанцировании, т.е. при попытке их использовать из не шаблонного кода. Инстанцирование по известной причине не произошло, но это вполне допускается стандартом, в данном случае надо было просто выполнить явное инстанцирование шаблона с нужными параметрами в cpp файле в котором есть реализация методов.
Записан

Странно всё это....
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #41 : 31-05-2010 04:34 » 

LogRus, а покажи пример... То есть там надо было создать некий фуфельный левый класс, где явно использовать фсе функции ?
Записан

Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #42 : 31-05-2010 05:00 » 

Ну не так всё страшно Улыбаюсь для этих целей есть специальная инструкция, которую обычно ставят после всех определений класса или в конце файла (кому как удобней, мне удобней 2-е)
Код:
template class Dinamic<int>; 
собственно и всего делов-то, можно так делать для каждого метода по отдельности, можно создать для каждого метода отдельный файл, ну и т.д. и т.п.

собственно это всё есть в разделе 10.5 Explicit Instantiation книги: Д. Вандервуд и Н. Джосатис "Шаблоны C++. Полное руководство"
PS: могу выслать если нужно
Записан

Странно всё это....
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #43 : 31-05-2010 05:31 » 

давай, пришли )
Переименовался ? Ага
Записан

Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #44 : 31-05-2010 05:39 » 

давай, пришли )
Переименовался ? Ага
Выслал.
Угу, надоело.
Записан

Странно всё это....
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #45 : 31-05-2010 05:54 » 

Спасибо ) Дома почитаю
Записан

Страниц: 1 [2]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines