![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
TupDub |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 21.11.2009 Репутация: нет Всего: нет |
Часто использую stl, да почти всегда! Лениво пишу после инклудов
И наслаждаюсь процессом. Но слышал, что так делать не хорошо, особенно в больших проектах! Собственно почему ? И в общем, какое зло может нести в себе STL ? Какие он имеет минусы ? Спасибо! |
|||
|
||||
NoviceF |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 13.3.2012 Где: Ростов-на-Дону Репутация: 2 Всего: 2 |
саттер александреску стандарты программирования на с++
Правило 59. Не используйте using для пространств имён в заголовочных файлах или перед дидективой #include Добавлено через 1 минуту и 38 секунд И кстати, при чём здесь STL? ) |
|||
|
||||
TupDub |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 21.11.2009 Репутация: нет Всего: нет |
ОК, STL как частный случай. Просто я его очень часто юзаю, не задумываясь глубоко. Можете пояснить свой ответ примером ?
|
|||
|
||||
NoviceF |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 13.3.2012 Где: Ростов-на-Дону Репутация: 2 Всего: 2 |
Открой, плс, указанную книжечку, там толковое пояснение с примерами. Но вкратце, если помещаешь объявление using, перед какой-либо директивой #include, тем самым ты распространяешь действие using на весь включённый #include код, который к этому может быть совсем не готов. Например, может вызываться не то, что ты рассчитываешь, если конкретное имя есть в #include и в std::. Лично на практике не сталкивался (т.к. её пока толком нет), но смысл мне видится таким. |
|||
|
||||
TupDub |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 21.11.2009 Репутация: нет Всего: нет |
Ок, книгу почитаю, спасибо! Но у меня остался вопрос про STL ? Форумчане, так ли хороша эта библиотека, везде ли или может, где-то лучше без неё ?
|
|||
|
||||
Фантом |
|
||||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 4 Всего: 49 |
Потому что тем самым ликвидируются преимущества, которые дает наличие в языке пространств имен. Все, грубо говоря, будет свалено в одну кашу, разбираться в которой будет неудобно (а для крупных проектов это обычно фатально).
Где-то, безусловно, лучше без нее. Где-то лучше с ней. В общем случае, без уточнения области применения, вопрос лишен смысла. |
||||
|
|||||
NoviceF |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 13.3.2012 Где: Ростов-на-Дону Репутация: 2 Всего: 2 |
Я вот немного сталкивался с кьютом, и там часть функционала STL дублируется (может быть и весь, сильно не вникал), вот есть смысл использоваться STL с кьютом (там всё таки есть какая-то обратная совместимость)? Или стоит учить функционал кьюта и по максимум использовать его (ну в приложениях на кьюте ессно)? |
|||
|
||||
kosmonaFFFt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 538 Регистрация: 14.4.2008 Где: Иннополис Репутация: нет Всего: 5 |
Например написав using namespace stl; using namespace boost; рискуешь нарваться на конфликты имен... Я например так сталкивался с конфликтом boost::exception и std::exception...
-------------------- ![]() |
|||
|
||||
azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
Qt насколько я помню дает некоторые гарантии относительно потокобезопасности чтения своих контейнеров, чего нет в STL по стандарту.
Где-то лучше, но в 90% случаев с ней лучше ![]() Скажем так: пока ты не знаешь в каких случаях он НЕ нужен - смело его используй. STL может здорово облегчить жизнь. |
||||
|
|||||
TupDub |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 21.11.2009 Репутация: нет Всего: нет |
Всем спасибо! Буду читать внимательно стандарты! Вопрос решён!
|
|||
|
||||
NoviceF |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 13.3.2012 Где: Ростов-на-Дону Репутация: 2 Всего: 2 |
Кстати о примерах, только что столкнулся с конфликтом имён функций bind из API сокетов и STL - вот и using namespace std. В моих микрозадачах это, конечно, не критично.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |