![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: нет Всего: 40 |
Mayk, то есть вы за тот пример который мне на работе предложили?
-------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Да, мы за него. Он значительно лучше наследования. И он не зависит от вектора в том смысле, что когда ты работаешь с деревом, ты всегда можешь использовать GetChild(), а не соображать "а реализован ли operator[] у вектора или позавчера мы заменили vector на list и поэтому наш tree[4] сегодня валится с дымом и едким запахом" Это сообщение отредактировал(а) Mayk - 13.3.2008, 10:39 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
на тот случай, если под аргументами против вектора понимаются мои слова, то поясню конкретнее:
дело не в том, вектор или список или ещё что-то дело в том, что хранится в контейнере если что-то запихиваешь в вектор, нужно быть готовым к копированию этого объекта и если дерево будет большим, это может привести к неожиданным и непонятным оверхедам так что при условии использования вектора я бы посоветовал хранить в нём указатели (обычные или умные - другой вопрос), чтобы избежать ненужного копирования больших объёмов данных Это сообщение отредактировал(а) maxim1000 - 13.3.2008, 12:58 -------------------- qqq |
|||
|
||||
| tonchitos |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: нет Всего: 40 |
перегружаю оператор =.
почему то ошибка. не пойму где:
Это сообщение отредактировал(а) tonchitos - 13.3.2008, 14:01 -------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
||||
|
|||||
| Lazin |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
оператор присваивания обычно выглядит так:
и вот здесь:
нужно написать вот так
|
||||||
|
|||||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
если не заменить vector<Node> на vector<Node*> как сказал maxim1000, то делать оператор присваивания большого смысла нет --- компилятор и сам напишет. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: нет Всего: 40 |
вот пример, но он сохраняет банально текст. Это сообщение отредактировал(а) tonchitos - 13.3.2008, 16:49 -------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
| tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: нет Всего: 40 |
ответьте уже кто нить!
плиз -------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
| korian |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 8.3.2008 Где: Украина, Харьков Репутация: 3 Всего: 17 |
Прочитав лекцию Mayk, хочу согласиться с тем, что включение контейнера в класс намного лучше наследования.
В свое оправдание могу лишь сказать, что на тот момент, я не рассматривал такой вариант. (вариант предложен не был, а мой моск до этого чета не дошел В варианте с наследованием, все проблемы можна решить, но по сравнению с вариантом композиции, это действительно будет "героическое преодоление собственных граблей". По поводу жесткой привязки, я имел ввиду то, что данная реализация, а именно доступ к элементу по индексу, привязывает к вектору. Если уходить от вектора к листу из-за перевыделения памяти, то получаем увеличенное время для доступа к элементу. в каком виде его сохранить то надо? |
|||
|
||||
| tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: нет Всего: 40 |
мне тут один человек предложил следующий вариант:
-------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |