Форум программистов, компьютерный форум 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()) { ... http://www.cyberforum.ru/cpp/thread1784525.html
На каком языке написан Explorer.exe? C++
На каком языке написан explorer.exe? *не на русском
Реальная задача для реального проекта для желающих покодить C++
Привет:) Попросили сделать парсер сайта по-дружески, но у меня реально времени на него нет. Если кому-то интересно, могу двигать в нужном направлении и может, при желании, могу пинать за плохой...
C++ Матрица перехода между двумя системами координат в 2D http://www.cyberforum.ru/cpp/thread1782613.html
Есть 2 системы координат в 2D пространстве. Есть координаты 2 точек в этих системах координат (как я понимаю, необходимо как раз 2 точки). Нужно найти матрицу перехода (X, Y, fi) между этими...
C++ Парсинг и обход дерева С помощью библиотеки htmlcxx парсится веб страничка. На выходе получаю DOM дерево. Ладно бы была одна страничка, тогда написал функцию для обхода, так страничек много и для каждой писать функцию для... подробнее

Показать сообщение отдельно
hoggy
Нарушитель
6589 / 2770 / 476
Регистрация: 15.11.2014
Сообщений: 6,123
Завершенные тесты: 1
26.07.2016, 19:22
Цитата Сообщение от Croessmah Посмотреть сообщение
например, я могу обойти контейнер,
или знаю какую структуру данных он представляет (список, массив и т.д.).
то есть, вы считаете очередь "адаптером" (и не контейнером) только потому,
что она не поддерживает итераторы,
и вы не знаете какую структуру данных она представляет?

на самом деле структура данных вам известна.
std::queue представляет собой адаптер sequence containers.
об этом сказано в спецификации.

поддержка begin/end делается элементарно:

C++
1
2
3
4
using iteratir_type = decltype( std::decltype<container_type>().begin() );
...
 
iteratir_type begin() {  return m_container_type.begin(); }
для очереди это не реализовано лишь потому,
что ей это не нужно согласно её бизнес-логике.

вот если я влезу в исходники стандартной библиотеки,
и допишу комплект begin/end методов,
но все остальное останется прежним.
вы хотите сказать,
что это волшебным образом сделает очередь "не адаптером, а контейнером" ?

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

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