|
|
|
Кллекция кнопочек :)) вообщем как это реализавать чере STL ?
|
|||
|---|---|---|---|
|
#18+
Так ? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. или так ? Код: plaintext 1. да и еще вопрос с вектором можно работать как с динамическим массивом ?? и как ? :) ____ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2004, 16:03 |
|
||
|
Кллекция кнопочек :)) вообщем как это реализавать чере STL ?
|
|||
|---|---|---|---|
|
#18+
наследовать от vector ничего не надо - это вообще бессмыслено так как там нету ни одной virtual функции :) с вектором можно работать как с динамическим массивом ?? вот так Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2004, 16:05 |
|
||
|
Кллекция кнопочек :)) вообщем как это реализавать чере STL ?
|
|||
|---|---|---|---|
|
#18+
т.е. вот так Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2004, 16:06 |
|
||
|
Кллекция кнопочек :)) вообщем как это реализавать чере STL ?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2004, 16:10 |
|
||
|
Кллекция кнопочек :)) вообщем как это реализавать чере STL ?
|
|||
|---|---|---|---|
|
#18+
блин, вторник тоже тяжелый день надо вот так Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2004, 16:12 |
|
||
|
Кллекция кнопочек :)) вообщем как это реализавать чере STL ?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2004, 16:13 |
|
||
|
Кллекция кнопочек :)) вообщем как это реализавать чере STL ?
|
|||
|---|---|---|---|
|
#18+
ну теперь ужо проесняется а если я запихал туды 5 элементов как мне к 3-му допустим достучатся ? ____ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2004, 16:19 |
|
||
|
Кллекция кнопочек :)) вообщем как это реализавать чере STL ?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2004, 16:19 |
|
||
|
Кллекция кнопочек :)) вообщем как это реализавать чере STL ?
|
|||
|---|---|---|---|
|
#18+
мне к 3-му допустим достучатся ? Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2004, 16:22 |
|
||
|
Кллекция кнопочек :)) вообщем как это реализавать чере STL ?
|
|||
|---|---|---|---|
|
#18+
funikovyuri наследовать от vector ничего не надо - это вообще бессмыслено так как там нету ни одной virtual функции :) очень даже осмысленно :) можно наследоваться, так : class Items: protected vector<Item*> { ... } т.е. например для переопрееления конструкторов, для замены/дополнения внешнего интерфейса и т.д. более того, такие замены делают код более управляемым, внешний интерфейс Items можно оставить, а вот реализацию менять, как будет угодно... напр. распространенный случай - последовательная коллекция, имеющая ф-ии быстрого поиска по ключам. Тут в классе-коллекции комбинируют и вектора и хеш-таблицы на все интересующие ключи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2004, 16:34 |
|
||
|
Кллекция кнопочек :)) вообщем как это реализавать чере STL ?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2004, 16:53 |
|
||
|
Кллекция кнопочек :)) вообщем как это реализавать чере STL ?
|
|||
|---|---|---|---|
|
#18+
т.е. например для переопрееления конструкторов, для замены/дополнения внешнего интерфейса и т.д. Да нет - можно конечно только во-первых , плохо это или хорошо, - но STL была спроектирована так что наследованию там места не нашлось (об этом говорил сам Степанов). во-вторых Сам же отлично знаешь что protected наследование - это кандидат для агрегации (очень редки случаи его реального применения). А public реализовать мез virtual не удастся - точнее - создатели STL не хотели чтоб удалось... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2004, 17:20 |
|
||
|
Кллекция кнопочек :)) вообщем как это реализавать чере STL ?
|
|||
|---|---|---|---|
|
#18+
2funikovyuri самое интерестное что когда я ковырял исходник какойто проги на VC то там было иммено так Код: plaintext 1. 2. 3. 4. вот по этому я и спросил так лутьше или так ... :) ____ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2004, 11:35 |
|
||
|
Кллекция кнопочек :)) вообщем как это реализавать чере STL ?
|
|||
|---|---|---|---|
|
#18+
2 funikovyuri Отсутствие виртуальных функций класса еще ничего не говорит о том, что наследоваться от данного класса нельзя. Главное, чтобы в коде не было удаления через указатель на предка: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Так что, наследуйтесь от чего угодно и улучшайте существующие реализации с одной лишь оговоркой - где не требуется полиморфное поведение от объекта. Удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2004, 12:36 |
|
||
|
Кллекция кнопочек :)) вообщем как это реализавать чере STL ?
|
|||
|---|---|---|---|
|
#18+
2 funikovyuri И еще:) Чтобы достучаться к третьему элементу надо писать v[2], а не v[3]. Удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2004, 12:50 |
|
||
|
Кллекция кнопочек :)) вообщем как это реализавать чере STL ?
|
|||
|---|---|---|---|
|
#18+
Анатолий Широков Отсутствие виртуальных функций класса еще ничего не говорит о том, что наследоваться от данного класса нельзя. А я разве говорил что нельзя? Вы невнимательно читали мои сообщения - пожалуйста наследуйте (через public) а потом требуйте от клиентов не использовать полиморфизм - я как раз и говорил о том что умный такого делать не станет... Чтобы достучаться к третьему элементу надо писать v[2], а не v[3]. Да, сыр, подъеб..ли вы меня что уж тут скажешь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2004, 13:53 |
|
||
|
Кллекция кнопочек :)) вообщем как это реализавать чере STL ?
|
|||
|---|---|---|---|
|
#18+
2 funikovyuri дарю рекомендую к использованию там, где постоянно создаются и удаляются вектора, особенно если их размер примерно одного порядка. прибавка к быстродействию порой раз в 10 на этих специфичных местах. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. для типов - элементов вектора, требующих немедленного деструктора (скажем, для смарт-поинтеров объектов, владеющих "большими" ресурсами) можно добавить resize(0) при возврате в пул и убрать его из конструктора. тут как раз примеры наследования чисто ради переопределения конструкторов и деструкторов. есть еще причины, по которым можно отнаследоваться по public - скажем, неохота использовать смарт-поинтеры в контейнере (много причин), но AddRef() и Release() у объектов, хранящихся по указателю, делать надо... Вот и наследуемся и переопределяем деструкторы и операции добавления, ресайза и пр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2004, 14:45 |
|
||
|
Кллекция кнопочек :)) вообщем как это реализавать чере STL ?
|
|||
|---|---|---|---|
|
#18+
Лови, Дим, обратно Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. Я заменил protected наследование агрегацией А public наследование внутри класса менять не стал по 2м причинам - лень - это локальный класс и область его применения очень узка - так что можно гарантировать его правильное применение самостоятельно - но опять же ничего хорошего в этом нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2004, 15:20 |
|
||
|
Кллекция кнопочек :)) вообщем как это реализавать чере STL ?
|
|||
|---|---|---|---|
|
#18+
Вообщето-то там было именно public наследование, т.е. инстанс класса ведет себя именно как обычный STL-вектор, а то, что ты прислал - класс без единого полезного метода. (при желании можно переопределить все сигнатуры конструкторов вектора) Внутренний класс тоже именно STL вектор, и именно в этом качестве он и используется. Зачем наследование? да ради только деструктора . И такие вещи я делаю сплошь и рядом - экономлю время, вовсю пользуя STL. Наследование еще никто не отменял, даже если в цепочке наследования нет фиртуальных ф-ий. Согласно правилам гомоморфных иерархий, с наследованием при наличии виртуальных ф-ий надо быть осторожнее, ибо чистая гомоморфная иерархия предполагает, что к базовому набору виртуальных ф-ий не добавляются никакие другие виртуальные ф-ии в процессе наследования. Однако наследование зачастую используется не только с целью использовать полиморфизм и строить эти чистые гомоморфные иерархии, зачастую мы используем наследование для тривиальной декомпозиции (с целью повторного использования кода). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2004, 17:38 |
|
||
|
Кллекция кнопочек :)) вообщем как это реализавать чере STL ?
|
|||
|---|---|---|---|
|
#18+
Дмитрий Вообщето-то там было именно public наследование, Ты вообще мои сообщения читаешь? Там public наследование как раз осталось - я избавился только от protected а то, что ты прислал - класс без единого полезного метода. То что я прислал - это 100% рабочий эквивалент того что прислал ты - но без protected-наследования... Я опять же сомневаюсь что ты внимательно прочитал мой ответ Наследование еще никто не отменял, даже если в цепочке наследования нет фиртуальных ф-ий. Согласно правилам гомоморфных иерархий, с наследованием при наличии виртуальных ф-ий надо быть осторожнее, ибо чистая гомоморфная иерархия предполагает, что к базовому набору виртуальных ф-ий не добавляются никакие другие виртуальные ф-ии в процессе наследования. Однако наследование зачастую используется не только с целью использовать полиморфизм и строить эти чистые гомоморфные иерархии, зачастую мы используем наследование для тривиальной декомпозиции (с целью повторного использования кода). Ты хоть сам-то пытался понять что написал? Полная каша из терминов с выходной полезной составляюще стремящейся к 0 - такой фигней пугать можно разве что ежиков в лесу :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2004, 18:20 |
|
||
|
Кллекция кнопочек :)) вообщем как это реализавать чере STL ?
|
|||
|---|---|---|---|
|
#18+
так - я все перепутал - у тебя в обоих случаях public-наследование... Только вот теперь мне вообще не ясно - что ты своим кодом пытался показать (я думал ты демонстрируешь применение protected-inheritance) - да можно наследовать для того чтобы добавлять - но не изменять - так как иначе нарушится полиморфизм... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2004, 18:25 |
|
||
|
Кллекция кнопочек :)) вообщем как это реализавать чере STL ?
|
|||
|---|---|---|---|
|
#18+
Ух, понаписли-то сколько :) 2 vdimas Наследование еще никто не отменял, даже если в цепочке наследования нет фиртуальных ф-ий. Согласно правилам гомоморфных иерархий, с наследованием при наличии виртуальных ф-ий надо быть осторожнее, ибо чистая гомоморфная иерархия предполагает, что к базовому набору виртуальных ф-ий не добавляются никакие другие виртуальные ф-ии в процессе наследования. Однако наследование зачастую используется не только с целью использовать полиморфизм и строить эти чистые гомоморфные иерархии, зачастую мы используем наследование для тривиальной декомпозиции (с целью повторного использования кода). А с "нечистой" гомоморфной иерархией какие проблемы могут возникнуть? Если ты про "бриллиантовое" наследование, то в этом случае стандартом оговорены правила доминирования. 2 funikovyuri ндя, видно у тебя день не задался ;) Дался тебе этот полиморфизм. PS Кстати, сейчас рулит статический полиморфизм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2004, 19:56 |
|
||
|
Кллекция кнопочек :)) вообщем как это реализавать чере STL ?
|
|||
|---|---|---|---|
|
#18+
Доброжелатель Дался тебе этот полиморфизм. Это не я - это они первые начали... PS Кстати, сейчас рулит статический полиморфизм. В смысле overloading - так он та тут при чем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2004, 20:02 |
|
||
|
Кллекция кнопочек :)) вообщем как это реализавать чере STL ?
|
|||
|---|---|---|---|
|
#18+
2 funikovyuri Вообще-то я дал пример полезного класса - наследника вектора. Этот класс весьма применим в случаях частого создания и удаления векторов. Используй и наслаждайся. Как видишь, он образован путем public-наследования, и переопределяет только конструктор и деструктор с целью использования пула векторов (вернее - пула "тел" векторов, используя замечательную STL парадигму - swap). Насчет терминов и пр. - это ты зря, я просто попытался возразить насчет твоего утверждения об необходимости наследования только в случае виртуальных методов, и попытался напомнить, что это просто еще один тип наследования для образования определенного рода иерархий, и путать или "разбавлять" типы иерархий и целей наследования не следует. (видишь, стараюсь без терминологии) 2 Доброжелатель А с "нечистой" гомоморфной иерархией какие проблемы могут возникнуть? Проблема "каши". Проблема попыток узнать в методах базового класса тип актуального наследника и пр. прелести. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2004, 03:38 |
|
||
|
Кллекция кнопочек :)) вообщем как это реализавать чере STL ?
|
|||
|---|---|---|---|
|
#18+
2 Доброжелатель PS Кстати, сейчас рулит статический полиморфизм Да не рулит он, просто сейчас многие компиляторы наконецто начали более или менее поддерживать стандарт оговоренный еще бог его знает когда и упомянутая парадигма просто заняла свое место. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2004, 22:22 |
|
||
|
|

start [/forum/topic.php?fid=57&tid=2035438]: |
0ms |
get settings: |
9ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
21ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
72ms |
get tp. blocked users: |
1ms |
| others: | 197ms |
| total: | 342ms |

| 0 / 0 |
