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

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: boost и algorithm/string.hpp  (Прочитано 19090 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« : 22-07-2008 09:11 » 

Господа,

может быть кто-то из Вас работал с этой библиотекой и сможет тркуть меня носом в нужном месте.

Мне надо в проекте использовать boost. Я ее скачала и решила хоть немного разобраться.
Для этого взяла первый же из приведенных в хелпе примеров и попробовала его скомпилировать. Ага, шас! Получила такую вот ошибку:

d:\boost\boost\algorithm\string\yes_no_type.hpp(23) : error C2265: '<Unknown>' : reference to a zero-sized array is illegal
        d:\boost\boost\algorithm\string\yes_no_type.hpp(24) : see reference to class template instantiation 'boost::algorithm::size_descriptor<I>' being compiled
d:\boost\boost\mpl\bool.hpp(37) : fatal error C1506: unrecoverable block scoping error

Сам код:

Код:

//#include "stdafx.h"
#include <boost/algorithm/string.hpp>
#include "iostream.h"

using namespace std;
using namespace boost;


int main(int argc, char* argv[])
{

    string str1(" hello world! ");
boost::to_upper(str1);  // str1 == " HELLO WORLD! "
    boost::trim(str1);      // str1 == "HELLO WORLD!"

cout << str1.c_str() << endl;

    string str2=
       boost::to_lower_copy(
          boost::ireplace_first_copy(
             str1,"hello","goodbye")); // str2 == "goodbye world!"
cout << str1.c_str() << endl;

return 0;
}

Сам проект я прикрепила.
Да, насчет stdafx.h: я сначала грешила на какие-то перехлесты с prekompiled headers, поэтому отключала их, потом включала... Но от перестановки слагаемых сумма не изменилась, чего и следовало ожидать. Отлично

При этом когда я попробовала следующий в хелпе пример с tokenizer, все работает! Но стоит появиться строке #include <boost/algorithm/string.hpp>
как тут же появляется та самая ошибка и все.  А черт его знает... Не понял
Скажите мне, где я туплю!?  Скромно так...
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #1 : 22-07-2008 09:14 » 

пардон, забыла дописать: использую 6-ю студию.

* boost_my.zip (9.9 Кб - загружено 1085 раз.)
« Последнее редактирование: 22-07-2008 12:51 от Malaja » Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Антон (LogRus)
Глобальный модератор

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


WWW
« Ответ #2 : 23-07-2008 04:08 » 

в 2003 нормально собирается
попробуй убрать using namespace
добавить
#include <string>

далее
#include "iostream.h"
замени
#include <iostream>

и пришли полный лог сборки.
Записан

Странно всё это....
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #3 : 23-07-2008 07:44 » 

LogRus,

сделала так:
Код:
#include <boost/algorithm/string.hpp>
#include <iostream>
#include <string>

//using namespace std;
//using namespace boost;

Результат тот же (это полный лог сборки):
Код:
Compiling...
boost_my.cpp
d:\boost\boost\algorithm\string\yes_no_type.hpp(23) : error C2265: '<Unknown>' : reference to a zero-sized array is illegal
        d:\boost\boost\algorithm\string\yes_no_type.hpp(24) : see reference to class template instantiation 'boost::algorithm::size_descriptor<I>' being compiled
d:\boost\boost\mpl\bool.hpp(37) : fatal error C1506: unrecoverable block scoping error
Error executing cl.exe.

boost_my.exe - 2 error(s), 0 warning(s)

Что мне непонятно, так это то, что под 2003-ей студией собирается без проблем... Ну не может же быть новая версия boost-библиотеки заточена под 2003-ю и не работать под 6-ой! Нелогично как-то...
Это все-таки не мелкомягкие или еще кто-то, им нужна совместимость со всеми версиями и платформами (ИМХО, конечно).
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Вад
Модератор

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

« Ответ #4 : 23-07-2008 08:31 » 

В 6й студии, насколько мне помнится, очень старая реализация STL. Что-то такое Мейерс писал про наследие 4-5й версий, дескать, библиотека была урезана в возможностях из-за отсутствия в компиляторах 4-5 версий поддержки шаблонов функций классов; в 6й же версии компилятор это умеет, а библиотеку переработать не успели/забыли. Может, заменить реализацию STL?
Записан
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #5 : 23-07-2008 09:54 » 

Вад,

спасибо за инфу!
Тогда мне проще пробовать разбираться с этой библиотекой на 2003-ей студии, чем ковырять что-то в самой студии, т.к. совершенно неизвестно, чем это потом закончится, а она у меня должна оставаться рабочей.
Тем более, что времени у меня на ознакомление мало (хотя грех жаловаться, т.к. это время все-таки есть, посему начальству и за то спасибо - ведь могли бы завалить какой-нибудь работой Ага )

Еще раз всем спасибо!
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #6 : 29-07-2008 14:46 » 

Господа,

нескромный вопросик - кто-нибудь имел дело с rbtree?
Я нахожусь в стадии ознакомления с библиотекой, поэтому пока вопросов больше, чем ответов.
В приложенном хелпе никакого промера я не нашла...
А хотелось бы понять, чем он так хорош и чем реально отличается от set и multiset.
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
RXL
Технический
Администратор

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

WWW
« Ответ #7 : 30-07-2008 06:13 » new

По теории, красно-черные деревья отличаются лучшей сбалансированостью, чем классические двоичные, а значит время поиска меньше.
Записан

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

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

« Ответ #8 : 30-07-2008 06:52 » 

По-моему, читал у Мейерса, что в большинстве реализаций STL ассоциативные контейнеры реализуются как раз красно-чёрными деревьями.
Записан
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #9 : 30-07-2008 07:59 » 

Ребята, дело в том, что все эти 3 контейнера реализованы как красно-черные деревья.
При этом set и multiset похожи на аналогичные контейнеры из STL, а rbtree - это что-то необычное.
А вот чем он необычен, я как-то пока не пойму...
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Антон (LogRus)
Глобальный модератор

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


WWW
« Ответ #10 : 31-07-2008 16:00 » 

STLport точно красно-черные деревья в ассоциативных контейнерах (в исходники глянул)

дай пожалуйста ссылку на библиотеку, если это rbtree класс из библиотеки Intrusive, то это очень интересная штука, судя по описанию сам не пользовался, но уже подумываю об этом, ОЧЕНЬ интересные свойства Улыбаюсь

суть двоичное Intrusive дерево, т.е. насколько я понимаю хранит часть данных дерева внутри хранимого объекта.


Надо изучить.
« Последнее редактирование: 31-07-2008 16:02 от LogRus » Записан

Странно всё это....
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #11 : 01-08-2008 13:52 » 

LogRus,

во-первых, мои извинения - только сейчас дошли руки ответить.
во-вторых, линки:

www.boost.org - страничка библиотеки
http://www.boost.org/doc/libs/1_35_0/doc/html/intrusive/set_multiset.html - это rbtree

Если скачаешь библиотеку, то хелп по всем этим контейнерам лежит по такой ссылке:
.....\boost\doc\html\intrusive.html (у меня просто все уложено напрямую как D:\boost).

Понимаешь, свойства очень интересные, но! Все приведенные примеры принципиально однотипны, поэтому слету понять красоту сложно...
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines