huge vector в STL
От: Botan2  
Дата: 04.08.03 11:37
Оценка:
Помогите решить проблему — необходим vector размером более 64K (компилятор borland с++ 5.2 c++ dos ).
STL в поставке этого не поддерживает (отраничение int).
Оригинальный STL от HP в котором есть hvector.h и т.д.
не компилится...
Вообщем необходимо либо заставить работать STL от HP,
либо нужна другая библиотека с поддержкой vector >64К и итераторы.

Спасибо.
Re: huge vector в STL
От: aik Австралия  
Дата: 04.08.03 11:41
Оценка:
Здравствуйте, Botan2, Вы писали:

B>Помогите решить проблему — необходим vector размером более 64K (компилятор borland с++ 5.2 c++ dos ).

B>STL в поставке этого не поддерживает (отраничение int).
B>Оригинальный STL от HP в котором есть hvector.h и т.д.
B>не компилится...
B>Вообщем необходимо либо заставить работать STL от HP,
B>либо нужна другая библиотека с поддержкой vector >64К и итераторы.

а не дешевле борланда заставить компилить 32-разрядный код для DOS?
Re[2]: huge vector в STL
От: Botan2  
Дата: 04.08.03 11:58
Оценка:
aik>а не дешевле борланда заставить компилить 32-разрядный код для DOS?

В том то и дело. Нет не дешевше... Я бы так и сделал.
Re: huge vector в STL
От: Bell Россия  
Дата: 04.08.03 12:23
Оценка:
Здравствуйте, Botan2, Вы писали:

...

Быть может имеет смысл переопределить size_t как unsigned long?
Любите книгу — источник знаний (с) М.Горький
Re[2]: huge vector в STL
От: Botan2  
Дата: 04.08.03 12:27
Оценка:
B>Быть может имеет смысл переопределить size_t как unsigned long?

Пробовал, но на этом проблемы не кончаются. Проблема там глубже... Уперся в выделение памяти в allocator'е.
Re[3]: huge vector в STL
От: Bell Россия  
Дата: 04.08.03 12:32
Оценка:
Здравствуйте, Botan2, Вы писали:


B>>Быть может имеет смысл переопределить size_t как unsigned long?


B>Пробовал, но на этом проблемы не кончаются. Проблема там глубже... Уперся в выделение памяти в allocator'е.


А ptrdiff_t тоже переопределял?
Любите книгу — источник знаний (с) М.Горький
Re[4]: huge vector в STL
От: Botan2  
Дата: 04.08.03 12:36
Оценка:
Здравствуйте, Bell, Вы писали:

B>А ptrdiff_t тоже переопределял?


ptrdiff_t переопределяется автоматически в зависиости от модели памяти. В large он long. Проблема в чем-то другом.
Re[5]: huge vector в STL
От: Аноним  
Дата: 04.08.03 13:24
Оценка:
Здравствуйте, Botan2, Вы писали:


B>ptrdiff_t переопределяется автоматически в зависиости от модели памяти. В large он long. Проблема в чем-то другом.


Еще указатели должны быть far
Re: huge vector в STL
От: assad Россия  
Дата: 05.08.03 05:26
Оценка:
Современные реализиции вектора здесь не помогут,
т.к. для huge указателя действует другая векторная
арифметика с нормализацией указателя.
В вашем случае ошибка происходит из-за ограничения на размер сегмента 64 кб.
Больше этого размера выделить непрерывный блок памяти не получиться
(вернее получиться может, но базовый сегмент будет разный).
Значит не будет выполнено требование к вектору о размещении его в непрерывной области памяти.
Для обхода нужно переписывать Allocator и итератор под себя.

Но существует обходной путь!
На RSDN уже упоминались DOS разширения защищённого режима,
по моему, там решалась и проблема с контейнерами STL.

С уважением, Дмитрий.
... << RSDN@Home 1.1 alpha 1 >>
Re[2]: huge vector в STL
От: Botan2  
Дата: 05.08.03 10:46
Оценка:
Здравствуйте, assad, Вы писали:

A>Но существует обходной путь!

A>На RSDN уже упоминались DOS разширения защищённого режима,
A>по моему, там решалась и проблема с контейнерами STL.

Вообщем, все ясно...

Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.