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

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

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

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

26.09.2012, 11:17. Просмотров 842. Ответов 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
Kastaneda
Jesus loves me
Эксперт С++
4703 / 2907 / 239
Регистрация: 12.12.2009
Сообщений: 7,405
Записей в блоге: 2
Завершенные тесты: 1
17.10.2012, 15:14 #16
Цитата Сообщение от maxon887 Посмотреть сообщение
Мол не твоё это дело как оно там работает(((((
Так и есть, программиста не волнует, что внутри контейнера, главное, что он работает так, как задокументировано.
Другими словами абстракция позволяет программисту абстрагироваться от внутреннего устройства контейнера (или чего-то дргугого).
Например потоки в/в тоже абстракция. Чтоб вывести слово на консоль мы используем оператор <<, этот же оператор мы используем, чтобы записать слово в файл. А то, что там вызываются совершенно разные функции, нас это не волнует. А то, что это ни какие не потоки, а объекты совершенно определенных классов, там это вообще дело десятое.
0
silent_1991
Эксперт С++
4993 / 3051 / 149
Регистрация: 11.11.2009
Сообщений: 7,038
Завершенные тесты: 1
17.10.2012, 18:49 #17
Цитата Сообщение от maxon887 Посмотреть сообщение
Мол не твоё это дело как оно там работает(((((
В этом заключается суть ООП, в частности, одного из его китов - инкапсуляции. Как бы вы логичнее всего организовали std::vector, что вам приходит в голову? Мне лично сразу приходит в голову хранить его как указатель на начало выделенной памяти и размер. Ан нет, разработчики, например, реализации stl в gcc посчитали, что удобнее хранить вектор как адреса начала и конца памяти. Таким образом, при вызове метода std::vector::size размер вычисляется как разность этих адресов. Но программисту-то на эту подробность наплевать, ему главное, чтобы вектор свои задачи выполнял, не больше, не меньше.
0
diagon
Higher
1932 / 1198 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
17.10.2012, 20:34 #18
Цитата Сообщение от AnreyKazakov Посмотреть сообщение
Объясните, пожалуйста, зачем нужны адаптеры контейнеров. Не понимаю смысл их существования, у них и функции какие-то кривые по сравнению с функциями контейнеров...
Хотя бы для быстродействия. Допустим, что вам нужен именно стек(может понадобиться для различных алгоритмов). Допустим, что вы пишите под gcc и внезапно вам нужно перейти на студию. Если в gcc стек, реализованный через дек, был в несколько раз быстрее стека, реализованного через вектор, то в студии дек реализован через опу и беспощадно тормозит.
Тогда вы просто изменяете объявление своего стека с stack<int> на stack< int, vector<int> >
...
Профит.
0
17.10.2012, 20:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2012, 20:34
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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