Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
AnreyKazakov
Заблокирован
#1

Зачем нужны адапторы контейнеров? - C++

26.09.2012, 11:17. Просмотров 798. Ответов 17
Метки нет (Все метки)

Объясните, пожалуйста, зачем нужны адаптеры контейнеров. Не понимаю смысл их существования, у них и функции какие-то кривые по сравнению с функциями контейнеров... И вообще непонятно, зачем, допустим, deque запихивать в stack, если она в первоначальном варианте обрабатывается намного лучше и легче?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.09.2012, 11:17     Зачем нужны адапторы контейнеров?
Посмотрите здесь:

Зачем нужны сортировки - C++
Скажите пожалуйста, зачем при подготовке к олимпиаде по программированию, нужно учить алгоритмы: Быстрая сортировка, сортировка пузырьком и...

Зачем нужны макросы? - C++
Зачем нужны макросы?

Зачем нужны исключения? - C++
Добрый вечер, прочитал статью об исключениях, не очень понимаю, почему бы не заменить их просто оператором if? Вот код с исключением: ...

Зачем здесь нужны указатели - C++
1. Через указатели на указатели посчитать сумму двух чисел и записать в третье. 2. Написать примитивный калькулятор, пользуясь только...

Объясните зачем нужны конструкторы - C++
Зачем нужны конструкторы? Читаю в книгах, смотрю видеоуроки и все равно не понятно

Зачем нужны хэш контейнеры? - C++
Привет всем) Собственно такой вопрос: зачем нужны хэш контейнеры? В чем разница между стандартными контейнерами STL? Эффективность и тд? ...

Зачем нужны многоуровневые указатели - C++
вопрос в названии темы

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
26.09.2012, 11:24     Зачем нужны адапторы контейнеров? #2
AnreyKazakov, stack это stack. Он работает по несколько другому принципу, нежели дек. Адапторы контейнеров вполне удобная вещь.
AnreyKazakov
Заблокирован
26.09.2012, 11:29  [ТС]     Зачем нужны адапторы контейнеров? #3
Цитата Сообщение от ForEveR Посмотреть сообщение
stack это stack. Он работает по несколько другому принципу, нежели дек. Адапторы контейнеров вполне удобная вещь.
Спасибо ForEveR, за такой Конкретыный ответ
Andsteadur
153 / 137 / 3
Регистрация: 23.05.2009
Сообщений: 275
26.09.2012, 11:36     Зачем нужны адапторы контейнеров? #4
Stack != Deque
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
26.09.2012, 11:38     Зачем нужны адапторы контейнеров? #5
AnreyKazakov, Просто вы задаетет странные вопросы. Как реализован стек - дело 10-е. Это абсолютно отдельная структура данных никак не относящаяся к деку.
AnreyKazakov
Заблокирован
26.09.2012, 11:44  [ТС]     Зачем нужны адапторы контейнеров? #6
Цитата Сообщение от ForEveR Посмотреть сообщение
Просто вы задаетет странные вопросы.
Ну , а чего же тут странного, вы можете задачку какую-ниб привести, где просто необходимо использовать стековую структуру, или структуру очереди, мне кажется у контейнеров функционал куда шире, и если хочешь его можно использовать и как стек и как очередь... deque, например, просто не использовать некоторые функции вот вам и stack получился....

Добавлено через 1 минуту
Тем более стек как раз на базе очереди двухсторонней и реализован (по умолчанию)
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
26.09.2012, 11:47     Зачем нужны адапторы контейнеров? #7
AnreyKazakov, Стек - это абсолютно отдельная структура данных (я не про С++, а вообще). Если задача требует (по логике) использовать стек - используют стек, а не дек. Это же логично, разве нет? Плюс к тому, адапторы не имеют итераторов, они имеют ограниченный доступ к элементам и ограниченное кол-во функций. Собственно, несколько не логично пытаться забрать из стека 3-й элемент, не кажется?
AnreyKazakov
Заблокирован
26.09.2012, 11:55  [ТС]     Зачем нужны адапторы контейнеров? #8
Цитата Сообщение от ForEveR Посмотреть сообщение
не логично пытаться забрать из стека 3-й элемент
Во, теперь начал понимать, наверное там и указателей нет, хотя если даже есть они в такой структуре не очень то нужны....
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
26.09.2012, 11:58     Зачем нужны адапторы контейнеров? #9
AnreyKazakov,
Например задача разбора мат/выражения - подсчета открывающих/закрывающих скобок. Используется стэк.
Пример очереди - какое-нибудь клиент-серверное игровое приложение, которое формирует сессионные игры в порядке живой очереди подключившихся.

С вашей логикой - вы выкинете все контейнеры, кроме какого-то одного. Зачем нам vector и queue, если есть deque?
AnreyKazakov
Заблокирован
26.09.2012, 12:14  [ТС]     Зачем нужны адапторы контейнеров? #10
Цитата Сообщение от I.M. Посмотреть сообщение
С вашей логикой - вы выкинете все контейнеры, кроме какого-то одного. Зачем нам vector и queue, если есть deque?
Ага
Кстате, я одну задачу в таком роде так и не решил ....
Цитата Сообщение от I.M. Посмотреть сообщение
подсчета открывающих/закрывающих скобок
Надо было найти количество возможных вариантов расположения скобок в уравнении, если 3 пары, то варианты возм: ()()() , (())() , ()(()), (()()) , ((())) . Ну, я думаю, сейчас то уж точно решу, с адапторами.... =)

Добавлено через 1 минуту
А там количество пар по моему 7 равно было, так и не придумав вариант написания программы я перебрал вручную, минут за десять, но не угадал с ответом =((
maxon887
12 / 12 / 3
Регистрация: 05.06.2012
Сообщений: 280
16.10.2012, 16:19     Зачем нужны адапторы контейнеров? #11
Вот! Тот же вопрос зачем он нужен не понимаю? Суй везде vector и list да и всё? нет?
Надо тогда какую нибудь статистику провести чтоле, по производительности. Или про реализацию его почитать?
Croessmah
Модератор
Эксперт CЭксперт С++
13063 / 7326 / 817
Регистрация: 27.09.2012
Сообщений: 18,085
Записей в блоге: 3
Завершенные тесты: 1
16.10.2012, 16:26     Зачем нужны адапторы контейнеров? #12
Цитата Сообщение от maxon887 Посмотреть сообщение
Суй везде vector и list да и всё?
Нарисуйте себе на листе бумаги дек, вектор, лист и стек. Разница будет видна.
silent_1991
Эксперт С++
4961 / 3037 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
16.10.2012, 22:08     Зачем нужны адапторы контейнеров? #13
Цитата Сообщение от maxon887 Посмотреть сообщение
зачем он нужен не понимаю? Суй везде vector и list да и всё? нет?
Когда программа пишется на высоком уровне, тем более с использованием ООП, необходимо понимать, что программист работает с программными объектами на некотором уровне абстракции. Если по логике задачи нужна именно стековая структура - логичнее, нагляднее, и, главное, с сохранением уровня абстракции нужно выбрать именно стек. Можно и вектором не пользоваться (абстракция, представляющая чёрный ящик-динамически расширяющуюся последовательность однотипных элементов), а использовать динамические или вообще здоровенные статические массивы. Но если задача по логике требует контейнер, динамически расширяющийся во время исполнения программы, то стоит использовать вектор. Ведь это тоже абстракция - динамическое расширение. На самом деле ничего не расширяется, а просто когда места не хватило - создаётся новая, большая по размеру область памяти, и туда копируются все старые данные, а старая область памяти удаляется. Но на некотором уровне абстракции мы видим именно динамическое расширение.
maxon887
12 / 12 / 3
Регистрация: 05.06.2012
Сообщений: 280
17.10.2012, 13:29     Зачем нужны адапторы контейнеров? #14
"Абстракция" - не нравиться мне это слово.Мол не твоё это дело как оно там работает(((((
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2012, 13:30     Зачем нужны адапторы контейнеров?
Еще ссылки по теме:

Зачем нужны виртуальные методы? - C++
Тут она не виртуальная Student s; Person &p = s; s.name(); //Student::name() p.name(); //Person::name() А тут наоборот ...

Зачем нужны классы и структуры? - C++
1. Зачем нужны классы? 2. Зачем нужны аргументы в main()? 3. Зачем нужны структуры. struct *имя*{}?

Зачем нужны модификаторы типов? - C++
Читаю Шилдта и все более менее понятно,но насчет unsigned , signed , shot , long что то вообще дыра в понимании и их пропускал,а потом...

Зачем нужны header-файлы - C++
Здравствуйте хотелось бы узнать ,в чем заключается смысл этих самых header файлов ?

Зачем вообще нужны шаблоны? - C++
Ребят, подскажите, зачем вообще нужны шаблоны, если можно внутри класса создать статический массив, состоящий из ссылок на объекты данного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт CЭксперт С++
13063 / 7326 / 817
Регистрация: 27.09.2012
Сообщений: 18,085
Записей в блоге: 3
Завершенные тесты: 1
17.10.2012, 13:30     Зачем нужны адапторы контейнеров? #15
Цитата Сообщение от maxon887 Посмотреть сообщение
"Абстракция" - не нравиться мне это слово.Мол не твоё это дело как оно там работает(((((
откройте фаил и посмотрите =)
Yandex
Объявления
17.10.2012, 13:30     Зачем нужны адапторы контейнеров?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru