![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Woo |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 14.4.2007 Репутация: нет Всего: нет |
привет
нормально ли так делать?
|
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
а зачем тебе это?
да и выглядит как-то убого.. |
|||
|
||||
| dizzy1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: 3 Всего: 25 |
Ничего плохого не вижу.
Для работы с динамической памятью посоветовал бы еше добавить const auto_ptr, чтобы избежать возможных проблем с утечками памяти. А для какой задачи это тебе нужно. В стандартной библиотеке есть специальные контейнеры для булевых величин. |
|||
|
||||
| zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
||||
|
||||
| dizzy1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: 3 Всего: 25 |
Зато удобно используется. Ну используй typedef.
А точно, специализация. Второй это bitset. |
|||
|
||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
на самом деле vector<bool> - плохо. Нужно избегать vector<bool>. Это не контейнер STL и он не содержит bool.... В требованиях стандарта говорится, что если v контейнер объектов T , с оператором [] , то должно компиллится
но с bool такая конструкция не скомпилится. vector<bool> - это псевдоконтейнер. |
|||
|
||||
| Woo |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 14.4.2007 Репутация: нет Всего: нет |
спасибо,
меня еще немного напрягает
я думаю наверно лучше всего использовать
Это сообщение отредактировал(а) Woo - 15.4.2007, 00:07 |
||||
|
|||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
||||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Имхо - нафиг. Слишком много граблей будет да и читабельность... действительно... А серьезно говоря, векторов векторов - это не матрица. В матрице все строки одинаковой длины. В векторе векторов - как захочешь, так и будет. Поэтому еще и вопрос о теоретической применимости. По начальному вопросу - кроме громоздкого объявления, проблем не вижу. Можно, как предлагали, сделать typedef разве что. |
|||
|
||||
| dizzy1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: 3 Всего: 25 |
Обоснуй, пожалуйста. В c++ есть по крайней мере 2 бича - приведение типов и проблемы с памятью (нет автоматической сборки, выход за пределы массива). Существуют даже языки, специально сделанные для устранения этих проблем (ну и для кое-чего другого), например, java. О каких граблях ты говоришь. Если о передачи владельца, то эти проблемы снимает const. Если о читабельности - есть typedef отступы, комментарии. Мне кажется читабельность менее важна чем стабильная работа программы (отсутствие утечек памяти). Или ты имеешь в виду другой smart pointer вместо этого. Я слышал уже такое мнение и мне интересны его причины. |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Ну, во-первых, если мне понадобятся смарт-поинтеры, то я первую очередь посмотрю на boost::shared_ptr. Про грабли с std::auto_ptr - вот не вспомню сейчас, где и у кого читал, но использование std::auto_ptr чревато очень многими граблями. Я тогда прочитал про эти грабли и для себя поставил галочку - "да, грабли опасные, auto_ptr "ф топку". Например, передача такого ptr в функцию. И как раз const эти проблемы не снимает. Их снимает частично const&. Да и то там... Но это далеко не все. Если как-нибудь пороюсь, то найду дли-и-инный список, почему потенциально плохо юзать std::auto_ptr. Сейчас уже не вспомню все грабли. Добавлено через 1 минуту и 39 секунд Да, кстати, насчет typedef... А приведи-ка пример, как ты его применишь в данном случае. |
|||
|
||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
нельзя хранить это в контейнерах STL. Семантика копирования у std::auto_ptr спецефическая. По стандарту это даже компиллится не должно.
не менее важна. Сопровождение длится намного дольше чем разработка |
|||
|
||||
| dizzy1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: 3 Всего: 25 |
Это и не понадобится, stl контейнеры сами работают с памятью, auto_ptr там не причем. auto_ptr p1,p2; выражение p1=p2 приводит к модификации правой части, в этом и выражается специфика. здесь работает механизм передачи владельца, он призван ограничить количество указателей на 1н объект. Когда такое поведение нежелательно (с трудом представляю себе когда оно может быть желательно) ставят модификатор const. При передаче в функцию в ее сигнатуре объявляют как const &. Другими словами применение const auto_ptr при объявлении указателей на объект и const auto_ptr & при объявлении в функции должно гарантировать отстствие любых "граблей".
Нууу, если твоя программа работает в 40% ситуаций, сопровождать ее будет сложнее, чем, скажем, покопаться в не столько самопонятном коде раз в месяц. JackYF, извини, но в твоем ответе нет ни одной причины почему не стоит его применять. Про boost::shared_ptr ничего не скажу, потому что этой библиотекой не пользовался. ну на счет typedef'а. что-то он слишком ного внимания получает typdef std::auto_ptr<ClassA> CLASSAAUTOPTR; CLASSAAUTOPTR ptr(new ClassA); |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
||||
|
||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
ага... опять 25... Кто Вам сказал, что правильность работы программы и читабельность ее - это вещи взаимоисключающие ? Код пишется в первую очередь не для компиллятора, а для человека, который будет читать его |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |