Rambler's Top100 Service калинин.ru / программирование / c и c++ /  << 20.07.00 >>

STLport 4.0

14 июля 2000 года наконец-то вышла новая версия библиотеки STLport 4.0. Для тех, кто еще не в курсе, что это такое, объясняю: это свободно распространяемая реализация стандартной библиотеки шаблонов для множества различных компиляторов и операционных систем. Кроме всего прочего, STLport дотсупен не только для современных компиляторов, более или менее удовлетворяющих стандарту языка, но и для некоторых старых компляторов, например Borland C++ 5.02 или MS Visual C++ 4.0.

Четвертая версия STLport отличается от предыдущей прежде всего тем, что теперь в нее входит полная поддержка потоков (ранее приходилось использовать потоки из библиотеки, поставляемой с конкретным компилятором). Реализация потоков взята из SGI (как, впрочем, и весь STLport). Вообще, STLport начал развиваться как попытка Бориса Фомичева перенести ивзестную библиотеку SGI STL на gcc и sun cc. Таким образом, с выходом четвертой версии, STLport стал полноценной библиотекой, соответствующей стандарту языка, во всяком случае, у него появились претензии на это.

Понятно, что использование одной и той же библиотеки на разных платформах, это уже большой плюс --- потому что никогда точно заранее не известно, что где и как будет плохо себя вести. Можно лишь гарантировать, что программа, при переносе с одного компилятора на другой, все-таки будет себя плохо вести даже в том случае, если скомпилируется. Использование одной библиотеки шаблонов очень сильно повышает шансы на то, что не будет крепкого мата тогда, когда программист увидит отсутствие в STL нового компилятора какого-нибудь контейнера. Например, в g++-stl-3 нет std::wstring. То есть, шаблон std::basic_string есть, и std::string является его инстанционированием на char, но попытка подставить туда же wchar_t ни к чему хорошему не приведет (в частности, из-за того, что в методе c_str() есть замечательная строчка вида return "").

Но и кроме единых исходных текстов у STLport есть еще несколько интересных возможностей и особенностей. Во-первых, это debug mode, при котором проверяются все условия, которые только возможны. Например, в этом режиме при попытке работать с неинициализированным итератором будет выдано соответствующее ругательство. Согласитесь, это удобно.

Во-вторых, в STLport есть несколько нестандартных контейнеров, таких как hash_map, например. Зачем? Ну, потому что стандартный map обычно реализован на сбалансированных деревьях поиска (как более общий способ обеспечения быстрого поиска при разнородных данных), и что делать в том случае, когда все-таки известна хорошая хеш-функция для конкретных элементов, не особенно понятно (ну, кроме того, что бы написать подобный контейнер самостоятельно).

В третьих, поддержка многопоточности. То есть, STLport можно безопасно использовать в программах, у которых более одного потока выполнения. Это досталось STLport еще от SGI STL, в которой очень много внимания уделялось именно безопасности использования.

Резюме

STLport является той библиотекой, которую я в последнее время стараюсь использовать где только можно. А для g++ на win32 так и вообще постоянно. Поэтому я был очень рад тому, что в 4-ой версии появилась поддержка mingw32.

Так что, если вдруг появились какие-то проблемы с STL, то можно попробовать взять STLport --- быть может, проблем станет поменьше.


Версия для печати


  Ссылки по теме:
http://www.stlport.org
   Официальный сайт библиотеки STLport.
http://www.sgi.com/Technology/
   Страничка библиотеки SGI STL.
  Рядом в разделе:
Новый язык программирования от Microsoft: C# (23.07.00)
   Честно говоря, когда я первый раз об этом услышал, я подумал что это чья-то дурацкая шутка. Но нет, действительно, фирма Microsoft...   >>>>
Правило "право-лево" (17.07.00)
   Этот текст не мой. Авторство принадлежит Alexander V. Naumochkin (к сожалению, знаю только адрес в сети FIDO, 2:5020/59), на мой взгляд,...   >>>>
  Рядом по дате:
Схватка / Heat, 1995 (21.07.00)
   Этот фильм сразу же привлекает внимание своими актерами: Аль Пачино и Роберт Де Ниро в главных ролях, это что-то да значит....   >>>>
Матрица / Matrix, 1999 (19.07.00)
   Этот фильм уже есть в заметках у Экслера, настоятельно рекомендую перед чтением моего комментария . Собственно, не буду пересказывать сюжетную линию...   >>>>
  Содержание:
Заглавная страница
Мой блог
Мое резюме
Дайджест
Программирование
   C&C++
Сети
Unix
Алгоритмы
Оптимизация
Соревнования
Отвлеченно
XML
TeX
Просто так
Студенческое
Туризм
  Байки
Фотографии
Комментарии
   Книги
Web-ресурсы
Фильмы
Интернет
Программное обеспечение
Жизнь
Благодарности
Форум
Хронология
 
  В этом разделе:
Простой, но полезный аллокатор памяти (18.02.03)
   Эта заметка --- продолжение "Postfix изнутри" в том смысле, что в качестве примера опять берется postfix. Но если в прошлый раз...   >>>>
C или C++? (09.07.01)
   Существуют два диаметрально противоположенных, но одинаково распространенных мнения, которые можно выразить как "C++ это C с классами" и "C++ и C...   >>>>
Религия и goto (14.04.01)
   Начнем несколько издалека. В программировании существует тенденция к алгоритмизации самого процесса программирования. То есть, выведение некоторых универсальных правил, использование которых в...   >>>>
ploticus (16.10.00)
   Есть такая программа, предназначенная для создания графиков различных видов из командной строки, называется ploticus. Программа сама по себе достаточно удобная ---...   >>>>
Шаманство, или ошибки работы с памятью (25.09.00)
   Когда программа становится внушительной по своему содержанию (то есть, не по количеству строчек, а по непонятности внутренних связей), то ее поведение...   >>>>
Библиотека консорциума W3, libwww (20.09.00)
   Популярный нынче термин "веб-программирование" обычно подразумевает под собой программирование, в лучшем случае, на perl, в худшем --- на PHP, в совсем...   >>>>
Инварианты внутри программы (18.09.00)
   Вы когда-нибудь задумывались, над тем, как вы пишите программы? Если нет, то, я думаю, сегодняшняя заметка будет вам полезна. Итак, как...   >>>>
Содержание раздела полностью...
   Примерно в тоже время
Схватка / Heat, 1995 (21.07.00)
   Этот фильм сразу же привлекает внимание своими актерами: Аль Пачино и Роберт Де Ниро в главных ролях, это что-то да значит....   >>>>
Матрица / Matrix, 1999 (19.07.00)
   Этот фильм уже есть в заметках у Экслера, настоятельно рекомендую перед чтением моего комментария . Собственно, не буду пересказывать сюжетную линию...   >>>>
Хронология полностью...
   Содержание
Заглавная страница
Мой блог
Мое резюме
Дайджест
Программирование
  C&C++
Сети
Unix
Алгоритмы
Оптимизация
Соревнования
Отвлеченно
XML
TeX
Туризм
  Байки
Фотографии
Комментарии
  Книги
Web-ресурсы
Фильмы
Интернет
Программное обеспечение
Жизнь
Студенческое
Просто так
Благодарности
Форум
Хронология
© 2000-2008, Andrey L. Kalinin
mailto:andrey@kalinin.ru
Rambler's Top100