Положительный/Отрицательный опыт использования STL
-
- Уже с Приветом
- Posts: 664
- Joined: 11 Nov 2002 04:29
- Location: USA
Положительный/Отрицательный опыт использования STL
Пытаюсь применить STL библиотеки в С++ для автоматизации работы с памятью (чтобы объекты выгружались из памяти автоматом). Пока - страшный геморрой, особенно с массивами объектов, синтакс неприятный, решения отнюдь не тривиальные.
Интересует опыт подобных решений - удалось ли применить STL в больших проектах без особой натуги, переключились ли на собственные классы - менеджеры памяти - или использовали что-либо другое?
Интересует опыт подобных решений - удалось ли применить STL в больших проектах без особой натуги, переключились ли на собственные классы - менеджеры памяти - или использовали что-либо другое?
-
- Уже с Приветом
- Posts: 13722
- Joined: 16 Jan 2001 10:01
-
- Уже с Приветом
- Posts: 376
- Joined: 04 Feb 2002 10:01
Re: Положительный/Отрицательный опыт использования STL
StressedintheUS wrote:Пытаюсь применить STL библиотеки в С++ для автоматизации работы с памятью (чтобы объекты выгружались из памяти автоматом). Пока - страшный геморрой, особенно с массивами объектов, синтакс неприятный, решения отнюдь не тривиальные.
Это дело привычки/опыта скорее.
StressedintheUS wrote:Интересует опыт подобных решений - удалось ли применить STL в больших проектах без особой натуги, переключились ли на собственные классы - менеджеры памяти - или использовали что-либо другое?
Использование STL контейнеров обычно дает неплохой результат в плане упорядочивания кода. Впрочем обычно всё контейнерами и ограничивается. Ну плюc еще string, auto_ptr. А вот управление памятью, алгоритмы и всякие другие сложности как правило (IMHO) остаются невостребованными. Используется то что есть по-умолчанию.
-
- Уже с Приветом
- Posts: 3003
- Joined: 14 Apr 2004 01:11
- Location: SFBA (было: Минск, Беларусь)
Re: Положительный/Отрицательный опыт использования STL
StressedintheUS wrote:Пытаюсь применить STL библиотеки в С++ для автоматизации работы с памятью (чтобы объекты выгружались из памяти автоматом). Пока - страшный геморрой, особенно с массивами объектов, синтакс неприятный, решения отнюдь не тривиальные.
В STL нет специализированных средств, предназначенных для решения таких задач. Поэтому мне не совсем понятно, в чем суть вопроса. Кстати, что имеется в виду, под "выгружением из памяти"?
Интересует опыт подобных решений - удалось ли применить STL в больших проектах без особой натуги, переключились ли на собственные классы - менеджеры памяти - или использовали что-либо другое?
Best regards,
Андрей
Андрей
-
- Ник закрыт.
- Posts: 86
- Joined: 04 Feb 2004 06:14
Re: Положительный/Отрицательный опыт использования STL
AndreyT wrote:Кстати, что имеется в виду, под "выгружением из памяти"?
Сборщика мусора как в жабе человек хочет
-
- Уже с Приветом
- Posts: 3003
- Joined: 14 Apr 2004 01:11
- Location: SFBA (было: Минск, Беларусь)
Re: Положительный/Отрицательный опыт использования STL
Вася Пупкин wrote:AndreyT wrote:Кстати, что имеется в виду, под "выгружением из памяти"?
Сборщика мусора как в жабе человек хочет
В том то и дело, что первое, что приходит в голову, когда говорят о "выгружении из памяти" - это своппинг, а не сборка мусора. Хотя и сборка мусора тоже кандидат. Потому и непонятно.
Best regards,
Андрей
Андрей
-
- Ник закрыт.
- Posts: 86
- Joined: 04 Feb 2004 06:14
Re: Положительный/Отрицательный опыт использования STL
AndreyT wrote:Вася Пупкин wrote:AndreyT wrote:Кстати, что имеется в виду, под "выгружением из памяти"?
Сборщика мусора как в жабе человек хочет
В том то и дело, что первое, что приходит в голову, когда говорят о "выгружении из памяти" - это своппинг, а не сборка мусора. Хотя и сборка мусора тоже кандидат. Потому и непонятно.
Своппингом обычно ОС занимается.
-
- Уже с Приветом
- Posts: 1906
- Joined: 14 Mar 2001 10:01
Re: Положительный/Отрицательный опыт использования STL
StressedintheUS wrote:Пытаюсь применить STL библиотеки в С++ для автоматизации работы с памятью (чтобы объекты выгружались из памяти автоматом). Пока - страшный геморрой, особенно с массивами объектов, синтакс неприятный, решения отнюдь не тривиальные.
А в чём конкретно проблема? Я вот если честно даже представить не могу, где там "страшный геморрой" может возникнуть при работе с памятью.
Единственно, вам ещё для нормального использования скорее всего понадобятся смарт-поинтеры кроме auto_ptr (его ни в коем случае нельзя хранить в коллекциях!). Например, посмотрите сюда: http://boost.org/libs/smart_ptr/smart_ptr.htm. В коллекции обычно хорошо запихивать shared_ptr из этой библиотеки.
Один совет по поводу STL и её изучения.
Эта библиотека не сложная, она просто неочевидная. Т.е., есть какие-нить библиотеки - вроде коллекций в MFC - посмотрел на нитерфейс класса, вроде как ясно, что он делает. Худо-будно начал использовать.
Другое дело STL. Лучше сначала выделить какое-то время на то, чтобы почитать про неё. Немного, не больше одного или даже половины дня. В онлайне вроде где-то есть статья самого Степанова. Если книжка - то есть книжка "The C++ Standard Library", by Nicolai M. Josuttis. Но её даже всю читать не надо, она толстая. MSDN насчёт STL лучше не смотреть, там написано очень плохо, лучше вот это: http://www.sgi.com/tech/stl/table_of_contents.html. Там, правда, несколько нестандартных расширений описано, но есть соотв. пометки. Ну и неплохо почитать Meyers, "Effective STL".
StressedintheUS wrote: Интересует опыт подобных решений - удалось ли применить STL в больших проектах без особой натуги, переключились ли на собственные классы - менеджеры памяти - или использовали что-либо другое?
Удавалось и удаётся. И в больших, и в маленьких тоже.
Мне вот наоборот, после STL любая библиотека контейнеров неуклюжей кажется.
-
- Уже с Приветом
- Posts: 1906
- Joined: 14 Mar 2001 10:01
Re: Положительный/Отрицательный опыт использования STL
Вася Пупкин wrote:AndreyT wrote:Кстати, что имеется в виду, под "выгружением из памяти"?
Сборщика мусора как в жабе человек хочет
Кстати, зачем? Т.е. это не риторический вопрос, действительно интересно.
В жабе как я понимаю детерминированных деструкторов нету, соответственно и смартпоинтеров. Поэтому им пришлось исхитряться и изобретать GC. А в каких случаях он для C++ нужен, я пока не могу представить.
-
- Уже с Приветом
- Posts: 12072
- Joined: 17 Nov 2002 03:41
- Location: английская колония
Re: Положительный/Отрицательный опыт использования STL
Vovka wrote:Вася Пупкин wrote:AndreyT wrote:Кстати, что имеется в виду, под "выгружением из памяти"?
Сборщика мусора как в жабе человек хочет
Кстати, зачем? Т.е. это не риторический вопрос, действительно интересно.
В жабе как я понимаю детерминированных деструкторов нету, соответственно и смартпоинтеров. Поэтому им пришлось исхитряться и изобретать GC. А в каких случаях он для C++ нужен, я пока не могу представить.
Ну если хочется реиспользовать обьекты - какой смысл их создавать и уничтожать?
Можно иметь пул обьектов с автосайзом и удалять в конце.
Верить нельзя никому - даже себе. Мне - можно!
-
- Уже с Приветом
- Posts: 3003
- Joined: 14 Apr 2004 01:11
- Location: SFBA (было: Минск, Беларусь)
Re: Положительный/Отрицательный опыт использования STL
Вася Пупкин wrote:AndreyT wrote:Вася Пупкин wrote:AndreyT wrote:Кстати, что имеется в виду, под "выгружением из памяти"?
Сборщика мусора как в жабе человек хочет
В том то и дело, что первое, что приходит в голову, когда говорят о "выгружении из памяти" - это своппинг, а не сборка мусора. Хотя и сборка мусора тоже кандидат. Потому и непонятно.
Своппингом обычно ОС занимается.
Обычно - ОС. Необычно - не ОС. Кто ж знает, что человеку нужно.
Своппинг в Win32, например, никак не помогает в ситуациях, когда задаче недостаточно адресного простанства процесса. Т.е. мало 2Гб и все тут. В такой ситуации спасает только самописный своппинг.
Best regards,
Андрей
Андрей
-
- Уже с Приветом
- Posts: 1360
- Joined: 02 Mar 2002 10:01
Re: Положительный/Отрицательный опыт использования STL
AndreyT wrote:Своппинг в Win32, например, никак не помогает в ситуациях, когда задаче недостаточно адресного простанства процесса. Т.е. мало 2Гб и все тут. В такой ситуации спасает только самописный своппинг.
( стало интересно ) А что за задачи такие, где 2ГБ памяти может не хватить?
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
-
- Уже с Приветом
- Posts: 1906
- Joined: 14 Mar 2001 10:01
Re: Положительный/Отрицательный опыт использования STL
A. Fig Lee wrote: Ну если хочется реиспользовать обьекты - какой смысл их создавать и уничтожать?
Можно иметь пул обьектов с автосайзом и удалять в конце.
Ну а при чём тут GC? Сами явно программируйте время жизни, и всё тут.
-
- Уже с Приветом
- Posts: 12072
- Joined: 17 Nov 2002 03:41
- Location: английская колония
Re: Положительный/Отрицательный опыт использования STL
Vovka wrote:A. Fig Lee wrote: Ну если хочется реиспользовать обьекты - какой смысл их создавать и уничтожать?
Можно иметь пул обьектов с автосайзом и удалять в конце.
Ну а при чём тут GC? Сами явно программируйте время жизни, и всё тут.
1. Как программировать время хизни?
2. А какая разница с GC?
3. Дык вроде вопрос был зачем кастом менеджмент меморы, предположили - нужен гарбейдж коллектор. Зачем он должен быть точной копией жавовского?
Верить нельзя никому - даже себе. Мне - можно!