С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

Зачем биты нужны это меньше байтов но int 32 бита но я не допер зачем это нужно это 4 байта то есть int не может больше 4 байт весить? - C++
Вот еще один вопрос зачем биты нужны это меньше байтов но int 32 бита но я не допер зачем это нужно это 4 байта то есть int не может...

Зачем нужны операторы << и >> - C++
В книжке Дейтлов есть код http://pic.ipicture.ru/uploads/091222/thumbs/q1TZw4n1JQ.jpg Вопрос в том, что там где написано, что числа...

Зачем нужны классы? - C++
Изучаю СИ++ после изучения СИ. Не пойму какой смысл в классах. То что они делают можно реализовать с помощью функций, структур и обычных...

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

Зачем нужны деревья? - C++
Изучил тему деревья (осуществлял втавки, удаление, обходы и т.д.). Теперь хочу разобраться, зачем они вообще нужны? В каких случаях надо...

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

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

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

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

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

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

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

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

Зачем нужны указатели - C++
Не могу понять синтаксис указателей. Понял, что это работа с адресами, что оператор &amp; это адрес. А вот * как я понял, это объявление...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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