1 | |||||||
Является ли адаптер контейнера контейнером26.07.2016, 16:10. Показов 3247. Ответов 62
Метки нет (Все метки)
75%, но некоторые вопросы вызывают недоверие. Например вопрос про стандартные контейнеры (нужно выбрать стандартные контейнеры из списка), один из вариантов std::queue, вот и думай - то ли автор вопроса плохо знает С++ и нужно выбрать std::queue, то ли автор знает С++ на достаточном уровне и std::queue выбирать не надо (т.к. это не контейнер, а адаптер). Другие вопросы тоже можно покритиковать.
1
|
26.07.2016, 16:10 | |
Ответы с готовыми решениями:
62
Детектировать, является ли контейнером set или является multiset Как перемещать содержимое контейнера одновременно с самим контейнером Целью работы является создание программы для обработки набора объектов с использованием класса -контейнера Из каждого элемента контейнера map вычесть среднее арифметическое контейнера |
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
26.07.2016, 19:07 | 22 |
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
26.07.2016, 19:22 | 24 | |||||
то есть, вы считаете очередь "адаптером" (и не контейнером) только потому,
что она не поддерживает итераторы, и вы не знаете какую структуру данных она представляет? на самом деле структура данных вам известна. std::queue представляет собой адаптер sequence containers. об этом сказано в спецификации. поддержка begin/end делается элементарно:
что ей это не нужно согласно её бизнес-логике. вот если я влезу в исходники стандартной библиотеки, и допишу комплект begin/end методов, но все остальное останется прежним. вы хотите сказать, что это волшебным образом сделает очередь "не адаптером, а контейнером" ? или возьмите любой контейнер, который не описан в стандарте. например, мою формочку. я из неё выпилю begin/end. а что у неё под капотом вы не знаете. и что, она от этого перестанет быть контейнером, и станет адаптером?
0
|
Неэпический
|
|
26.07.2016, 20:17 | 25 |
Мы обсуждаем термины, а не бизнес-логику
Как Вы её сюда приплели - не понятно. Согласно бизнес-логике, объект типа unique_ptr - указатель же? А по сути - это не указатель, а объект некоего класса Добавлено через 22 минуты Кстати, у нас на работе есть труба, метров 20 в высоту, так вот на схеме она подписана как stack. Сижу и думаю, является она контейнером или нет
2
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
26.07.2016, 20:35 | 26 |
Вообще я бы в вел немного другое обозначение для термина "контейнер" - контейнером является структура хранящая указатели на объекты и имеющая средства слежения за их жизненным циклом (удаляющая их из себя при удалении объекта извне и удаляющая остатки при своем удалении (для контейнера-владельца)). А все остальное - банальные динамические массивы. Так что в STL контейнеров вообще нет.
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
26.07.2016, 20:37 | 27 |
термин - это слово, которое является названием некоторого понятия,
имеющего однозначное определение в некоторой предметной области. например - в программировании. дайте мне определения терминов "контейнер", и "адаптер". и сопоставьте это все с очередью. нет. это типа "смарт-поинтер". задача указателя - хранить адрес объекта. задача смарт-поинтера - определять стратегию владения ресурсами. да не нужно мне это все цитировать. я знаком с формальной стороной дела. вы вообще знаете почему очередь называется адаптером? это - полноценный самостоятельный механизм с собственным дизайном, и тп. но при этом, очередь позволяет адаптировать её под ключ задачи, для более эффективного решения. где то эффективнее, если элементы очереди живут в векторе. а где то - в листе, например. однако это не очередь адаптирует вектор под ключ задачи. это она сама адаптирует собственную реализацию под ключ задачи. там где используется очередь, вектор никому не нужен. нужна именно очередь, которую можно кастомизировать, подстраивая под ключ конкретной задачи. понимаете?
1
|
Неэпический
|
|
26.07.2016, 20:43 | 28 |
Другими словами, само хранение очередь делегирует контейнеру,
сама при этом - лишь обертка. У меня всё. Я же написал уже, что не согласен. Не нужно меня переубеждать, это дело крайне неблагодарное
0
|
Fulcrum_013
|
26.07.2016, 20:45
#29
|
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
26.07.2016, 20:48 | 30 |
она не "лишь обертка".
она - полноценный класс с собственной отличающийся от всяких векторов бизнес-логикой. вы написали класс, бизнес-логика которого не имеет ни малейшего отношения к строкам. какой нибудь шаблоно-класс персон студенческих. для решения собственной задачи у него есть мембер: std::string. причем есть возможность указать альтернативный тип, через параметр шаблона. хотите - std::string, а хотите - user::string по вашей логике получается, что персоны - это на самом деле "всего лишь обертки" над стрингой? они ведь хранят данные в строке. делегируют ей задачи для хранения.
0
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|
26.07.2016, 20:49 | 31 |
В доке gcc - адаптер это контейнер.
В книге Джоссатиса - это контейнер. В книге Страуструпа - это контейнер. В стандарте - в главе, которая называется контейнеры. Какое еще подтверждение нужно?) Другое дело, что их нельзя назвать частью именно “фреймворка“ STL.
0
|
Kastaneda
|
26.07.2016, 20:55
[ТС]
#32
|
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
26.07.2016, 21:02 | 33 |
Не по теме: Так же как и меня. Пока что я ржу нимагу с коммитета. То у них итераторы unsafe то смарт-поинтеры unsafe (реально unsafe, бо как после delete *this; у того на кого указывают креш гарантирован), то тонны нечитабельного гавнокода в которых есть все кроме самого необходимого. При этом то что реально необходимо в повседневной работе - а именно контейнеры (списки на основе массива указателей) со слежением за жизненным циклом, мультисписки обработки, деревья с иерархией владелец-предок и мультидеревья умещаются в 1000 строк кода. Лучше бы блин свойства и RTTI стандартизировали (имеется в виду не проcто typeid и typename а список свойств), а то блин для того чтобы подгрузку полиморфную на автомате сделать приходится свой парсер-генератор таблиц RTTI городить. А все от того что никак в комитете не поймут что для того чтобы указатели были безопасными, умными должны быть не сами указатели а объекты которые их используют, Добавлено через 1 минуту А криво сделанная, опасная в использовании библиотека, не имеющая в своем составе ничего нужного.
0
|
Неэпический
|
|
26.07.2016, 21:05 | 34 |
Которая называется "Containers library",
Но при этом в отдельной главе - "Containers adaptors". Из перевода книги: Добавлено через 1 минуту
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
26.07.2016, 21:40 | 35 |
Не по теме: А я туда и не прошусь. Да и если и буду когда нибудь заниматься стандартизацией чего либо, то этот язык будет называться по другому, например ++С. А то что то тесновато в рамках C++ стало. Не хватает средств для одновременного описания мультисписка и данных его привязки в содержимом классе. Да и совместить просто мультисписок (объект может находится одновременно в каждом из списков обработки) с уникальным мультисписком (объект в каждый момент времени может находится только в одном из списков обработки) в одном котейнере просто шаблоном не удается. Потому как автогенерация нужна сразу в нескольких классах, мало того в скопе класса а не инстанционированного шаблона, а то 2 раза одну и ту же инфу писать приходится только разные ее части и смотреть чтобы они совпадали. Добавлено через 22 минуты Не по теме: Ну да, разве что некоторые почти инкогнито кошаки пытаются минусами переубедить что комитет самый типа вумный. Только вот что то ни в одной серьезной библиотеке не видел использования STL ни разу. Зато списки со слежением за жизненным циклом, списки обработки, древовидные иерархии, двунаправленные указатели в том или ином объеме реализации - так это везде. Так же как практически во всех лидирующих реализациях компилятора нативные свойства и делегаты, и так или иначе в урезанном виде (только для своей библиотеки идущей в комплекте) RTTI. что поделаешь - компонентную модель по другому не реализуешь. Либо RTTI и реестр типов генерит компилятор, либо писать эти таблички ручками. По другому никак. Вот и возникает вопрос - почему коммитет мается со всякой дурью, а тем более с бесперспективной моделью обеспечения безопасности указателей, давно никому не интересными динамическими структурами данных заточенными под хранение фундаментальных типов, вместо стандартизации того что действительно необходимо на современном этапе. Опять же - не утекти память это не задача для толкового первокурсника. А вот гораздо более чаще встречающаяся на практике задача - обнулить все ссылки на удаленный объект и исключить их из всех списков в которых он содержится почему то вообще без внимания осталась. Ну это уж если они еще и хотят стандартный фреймверк на все случаи жизни. т.е. что получается - носится коммитет с библиотекой по концепции 70-ых а из за этого простейшие и нужнейшие языковые средства которые всех вендоров так или иначе есть уже 20 лет стандартизировать не может.
0
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|
26.07.2016, 21:47 | 36 |
Kastaneda, по поводу фреймворка - это к Джоссатису, он фреймворком не один раз называет, а я лишь в кавычки взял, дабы свою мысль донести)
Croessmah, из цитаты следует, что стандартные контейнеры STL - лишь часть стандартных контейнеров) Тут нужно понимать контекст, что понимается автором под STL, дабы точно интерпретировать цитату. Ибо в стандарте вообще никакого упоминания STL нету. То, что адаптеры в отдельной главе, не делает их нестандартными или неконтейнерами) - они все равно в либе контейнеров.
0
|
Avazart
|
26.07.2016, 21:58
#38
|
Не по теме: Fulcrum_013, Ты уже придумал как назовешь свою секту? :D
0
|
Fulcrum_013
|
26.07.2016, 22:02
#39
|
0
|
Avazart
|
26.07.2016, 22:05
Является ли адаптер контейнера контейнером
#40
|
0
|
26.07.2016, 22:05 | |
Содержимое внутреннего контейнера увеличивает размер внешнего контейнера Ajax. Задача заменить содержимое контейнера на содержимое того же контейнера из ответа сервера Wi-fi адаптер. Ноутбук перестал находить адаптер. задача с контейнером Проблемы с контейнером Работа с контейнером Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |