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

Является ли адаптер контейнера контейнером - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ищу описание Pocketsphinx http://www.cyberforum.ru/cpp/thread1784787.html
Можете дать хорошее описание ( туториал ) по pocketsphinx. Просто у меня весьма туго с английским
C++ Multimap find the same key and sum up values Доброе утро Хотел уточнить , потому что знаю, что можно так сделать, но как не знаю if (multimap.find(currentNode) == multimap.end()) { multimap.insert(pair<int,int>(nextNode, Totallength)); } else { http://www.cyberforum.ru/cpp/thread1784525.html
На каком языке написан Explorer.exe? C++
На каком языке написан explorer.exe? *не на русском
Реальная задача для реального проекта для желающих покодить C++
Привет:) Попросили сделать парсер сайта по-дружески, но у меня реально времени на него нет. Если кому-то интересно, могу двигать в нужном направлении и может, при желании, могу пинать за плохой код. Что нужно сделать - парсер с HTTP клиентом. Пример клиента на boost::asio скину, покажу как парсить HTML регулярками (да, есть библиотеки, но думаю руками будет интересней). Могу архитектуру...
C++ Матрица перехода между двумя системами координат в 2D http://www.cyberforum.ru/cpp/thread1782613.html
Есть 2 системы координат в 2D пространстве. Есть координаты 2 точек в этих системах координат (как я понимаю, необходимо как раз 2 точки). Нужно найти матрицу перехода (X, Y, fi) между этими системами координат. Не подскажите, где взять готовый код на C++ или другом языке для решения этой задачи. А то решаю в лоб, получаются довольно большие уравнения с тригонометрией и несколькими решениями).
C++ Парсинг и обход дерева С помощью библиотеки htmlcxx парсится веб страничка. На выходе получаю DOM дерево. Ладно бы была одна страничка, тогда написал функцию для обхода, так страничек много и для каждой писать функцию для обхода с соответствующим поиском тегов и атрибутов это ж ппц как не охото. На шарпе юзал AngleSharp с его QuerySelectorAll, писал QuerySelectorAll("tr td:nth-child(1) a") и получал все нужные... подробнее

Показать сообщение отдельно
hoggy
6534 / 2714 / 469
Регистрация: 15.11.2014
Сообщений: 5,993
Завершенные тесты: 1
26.07.2016, 18:17
Цитата Сообщение от Kastaneda Посмотреть сообщение
почему с queue иначе?
потому что у queue - отличная от std::vector бизнес-логика.

когда вы используете std::queue,
то вы делаете это потому, что вам нужна бизнес-логика именно std::queue
а не std::vector, на котором он может базироваться

если бы вам был бы нужен std::vector,
то именно им бы вы и пользовались.
Цитата Сообщение от Kastaneda Посмотреть сообщение
queuе - это как раз описанный пример с вектором.
нет. это вообще из другой оперы.

std::queue не умеет того, что умеет std::vector.
и не нужен там, где нужен std::vector.

его бизнес-логика и паблик-интерфейс принципиально отличаются.

Цитата Сообщение от Croessmah Посмотреть сообщение
тогда любой объект, который хранит контейнер является контейнером
нет. не любой.

только тот, кто реализует функциональность контейнера.

Кликните здесь для просмотра всего текста
у меня например есть "формы" - контейнер,
который реализует паттерн "домики"
(я точно не знаю, как на самом деле называется этот паттерн.
но суть в том, что бы была возможность декларативно указать из чего состоит дерево,
узлами которого могут являться объекты разных типов)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// пример использования
auto form = 
  Form::create("form")
    .size(10,10)    
    .position(100,100)
    .title("Form")   
    .Widget<Box>("box1") 
      .size(10,10) 
      .position(100,100)
    .done()          
    .Widget<Box>("box2") 
      .size(10,10)
      .position(100,100)
    .done();
.done();
вот там под капотом тоже может быть некий контейнер.
но это - детали реализации.

теоретически, я мог бы вынести в итерфейс возможность указать
точный тип контейнера в котором будут храниться узлы.

от этого "форма" быть контейнером не перестанет.
так же, как и std::queue,
форма реализует свою собственную бизнес-логику.
которая сильно отличается от бизнес-логике того контейнера,
на котором она базируется.

кстати, для создания форм, мне пришлось реализовать, внимание:
итератор-адаптер и рекурсивный-итератор-адаптер.

итератор-адаптер параметризуется итератором любого "рекурсивного контейнера".
(рекурсивный контейнер - контейнер, элементы которого - контейнеры такого же типа)

и нацеливается на его "нативный итератор",
то есть итератор контейнера на котором базируется "рекурсивный контейнер".

и наделяют его дополнительным функционалом:
умением знать где начало коллекции,
где конец,
валиден ли он.

в общем, расширяет возможности стандартного интерфейса итераторов.

рекурсивный-итератор-адаптер базируется на итератор-адаптер,
и используя его расширенные возможности,
может гулять по рекурсивному контейнеру как угодно.
можно рекурсивно обойти все дерево.

вот это то, что под капотом "формочек".
и этот факт никак не делает сами формочки адаптером над какими то контейнерами.

у них, повторюсь, уникальный интерфейс, свои требования, свой дизайн,
своя область применения.

вот с std::queue - аналогично.
разница лишь в том,
что там наружу вытащили знание о контейнере,
на котором базируется бизнес-логика std::queue
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru