Адекватная замена для MS STL deque?, нужна замена в связи с багой в MS STL |
Здравствуйте, гость ( Вход | Регистрация )
Адекватная замена для MS STL deque?, нужна замена в связи с багой в MS STL |
Iron Bug |
6.10.2010, 13:45
Сообщение
#1
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
В связи с обнаружившейся страшной багой ищу какую-нибудь опенсорцную реализацию дека (ну или хотя бы очереди с итератором или оператором []).
Поиск по гуглу пока не дал ничего вразумительного (слишком распространённое название - deque), а свой огород городить банально не хватает времени... Конечно, если не найду, то придётся возиться с динамическими массивами, а у меня ещё дофига другой работы, причём довольно срочной. Может, кто подскажет такую готовую библиотечку на С++ или С? |
|
|
Iron Bug |
7.10.2010, 13:15
Сообщение
#2
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
Ура! Я собрала STLport с бустом под студией 2005.
Пишу маленькую инструкцию: Сборка STLport + Boost компилятором MSVC 2005 (я собирала с версиями STLport 5.2.1, Boost 1.44.0, MSVS 2005 SP1) 1. Качаем последнюю версию буста тут. Разворачиваем куда-либо. Допустим, пускай это будет папка c:/src/boost_1_44_0. Оттуда же качаем уже собранный bjam и помещаем bjam.exe в корневую папку с бустом (вообще, он поставляется прямо с бустом и можно его самостоятельно собрать, запустив bootstrap в корневом каталоге буста). 2. Качаем последнюю версию STLport тут. Разворачиваем куда-либо. Допустим, пускай это будет папка c:/src/STLport-5.2.1. 3. Собираем буст с заголовками STLPort: 3.1. В каталоге c:/src/boost_1_44_0/tools/build/v2 правим файл user-config.jam. Добавляем строку с указанием расположения заголовочных файлов STLport: Цитата using stlport : 5.2.1 : с:/src/STLPort-5.2.1/stlport ; Пробел перед завершающим символом ";" обязателен! (блок code убивает пробелы - так что вставляю в quote) (Буст добавляет букву p к именам библиотек, которая означает, что данная сборка собрала с STLport. Так что сборка безопасна, если у вас собраны другие варианты библиотеки). 3.2. Из корневого каталога буста (там уже лежит bjam.exe) запускаем bjam c нужными нам параметрами. Например, для полной сборки буста это будет такая строка: Обратите внимание, добавлена опция stdlib=stlport - это и есть указание использовать наш STLport. Запускаем bjam и идём отдыхать: собирается он долго и нудно. Чтобы было быстрее, можете добавить в строку опцию -jN, где N - количество ядер CPU у вас на компе - тогда он будет распараллеливать процесс сборки. Можете запустить bjam --help и посмотреть другие параметры: например, можно указать, куда конкретно складывать заголовки и библиотеки, и прочие такие полезные опции. 4. Собираем сам STLport: 4.1. Открываем консоль (cmd). Запускаем установку переменных окружения MSVC 2005. Если студия установлена в стандартном варианте, с 32-битной платформой, то это будет выглядеть так: 4.2. Далее НЕ ВЫХОДЯ из консоли, перемещаемcя в ней к нашей папке с STL (cd c:/src/STLport-5.2.1) и в этой папке выполняем следующую команду:
Я собирала со статической линковкой стандартных библиотек. Можете использовать динамическую, заменив опцию на --with-dynamic-rtl. 4.3. НЕ ВЫХОДЯ из консоли, переходим в каталог c:/src/STLport-5.2.1/build/lib и запускаем там команду
Ждём, когда скомпилится. Детально про сборку и возможности проверки собранного STLport можно почитать в файле c:/src/STLport-5.2.1/doc/README.msvc (правда, там опечатка с указанием опции компилятора - он задаётся без префикса -c). 5. Открываем студию и прописываем в студии пути для нашего STL: меню Tools->Options. Настройка VC++ Directories: Platform: Win32, Show directories for: Include files - добавить ПЕРЕД всеми стандартными путями путь c:/src/STLport-5.2.1/stlport Platform: Win32, Show directories for: Library files - добавить ПЕРЕД всеми стандартными путями путь c:/src/STLport-5.2.1/lib Собственно, всё. Код править не нужно, насколько я понимаю. У меня deque заработал без проблем. Просто перекомпиляция. P.S. Теоретически, можно собирать и без буста. P.P.S. Если вдруг кто-то захочет собрать и что-то вдруг не будет собираться - сообщайте. Я могла что-то упустить, хотя вроде бы всё написала и порядок не перепутала. Сообщение отредактировал Iron Bug - 7.10.2010, 15:47 |
|
|
Текстовая версия | Сейчас: 18.1.2025, 12:09 |