|
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
|
||||||
Как создать экземпляр контейнера, содержащий контейнеры и т.д21.05.2015, 23:06. Показов 1290. Ответов 23
Метки нет (Все метки)
Добрый вечер! как это можно сделать, не создавая вспомогательных классов?!
???? Добавлено через 34 минуты ???
0
|
||||||
| 21.05.2015, 23:06 | |
|
Ответы с готовыми решениями:
23
растягивающийся блок по длине контейнера который растягивается и в который добавляются другие контейнеры
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
||||||
| 21.05.2015, 23:12 | ||||||
|
Хулиган, Имхо, вопрос задан непонятно, поэтому никто не отвечает.
Например, не понятно что значит в твоем понимании "не создавая вспомогательных классов". Рискну предположить, что нужно нечто такое (С++11):
0
|
||||||
|
1379 / 406 / 144
Регистрация: 22.10.2014
Сообщений: 872
|
||||||
| 21.05.2015, 23:13 | ||||||
|
Хулиган, он у вас уже создан вот этим:
0
|
||||||
|
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
|
|
| 21.05.2015, 23:16 [ТС] | |
|
DrOffset, ну типо связный список из MAPов, по ключу можно выбрать ветку следующих map. Реальной задачи нет, просто стало интересно возможно ли такое?
0
|
|
|
1379 / 406 / 144
Регистрация: 22.10.2014
Сообщений: 872
|
|
| 21.05.2015, 23:19 | |
|
Хулиган, В С/С++ всё возможно, и 40-мерные массивы/вектора/контейнеры - не исключение.
Смотрите у DrOffset заполненный экзампл.
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
|
| 21.05.2015, 23:20 | |
|
0
|
|
|
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
|
||||||||||||
| 21.05.2015, 23:24 [ТС] | ||||||||||||
0
|
||||||||||||
|
1379 / 406 / 144
Регистрация: 22.10.2014
Сообщений: 872
|
||
| 21.05.2015, 23:33 | ||
![]() Вы можете описать статически любую вложенность, но не бесконечную и явно определённую на этапе компиляции. Тут можно и шаблонами побаловаться если лень N вложенных мапов писать. Но N всё равно должна быть доступна на этапе компиляции. В случае динамики, то соответственно можно приблизиться к бесконечности, если памяти хватит и такая бесконечность вас устроит
1
|
||
|
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
|
||
| 21.05.2015, 23:36 [ТС] | ||
|
0
|
||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
|||||||
| 21.05.2015, 23:44 | |||||||
|
Напрямую нельзя. Только через вспомогательный тип. Добавлено через 3 минуты Хулиган,
1
|
|||||||
|
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
|
|
| 21.05.2015, 23:47 [ТС] | |
|
0
|
|
|
1379 / 406 / 144
Регистрация: 22.10.2014
Сообщений: 872
|
|||||||
| 21.05.2015, 23:50 | |||||||
![]()
0
|
|||||||
|
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
|
|
| 21.05.2015, 23:53 [ТС] | |
|
Nosey, спасибо, такой вариант я знаю. Но в описании темы я написал же НЕ СОЗДАВАЯ ВСПОМОГАТЕЛЬНЫХ КЛАССОВ!
0
|
|
|
1379 / 406 / 144
Регистрация: 22.10.2014
Сообщений: 872
|
||
| 21.05.2015, 23:57 | ||
|
Не по теме: Осталось лишь решить философский вопрос считать ли typedef вспомогательным классом :):)
0
|
||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
||
| 21.05.2015, 23:59 | ||
|
В случае с шаблоном этого не происходит. Т.к. чтобы сформировать тип, нам нужно подставить аргументы, но один из аргументов - это тот же самый еще не сформированный тип. Получается логическая ловушка. Чтобы разорвать ее, приходится вводить еще одну сущность, с которой все начнется и которая уже имеет определенный тип.
0
|
||
|
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
|
||
| 22.05.2015, 00:05 [ТС] | ||
|
0
|
||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
||
| 22.05.2015, 00:11 | ||
|
В моем примере на разные уровни мы запихиваем указатель на один и тот же класс, но с разными значениями. Получается дерево. Работает это потому, что map_type - это готовый тип, когда мы подставили int в качестве ключа. Поэтому мы можем взять указатель на него и поместить в map. map при этом тоже становится законченным типом, т.к. все аргументы шаблона определены строго.
0
|
||
|
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
|
|
| 22.05.2015, 00:23 [ТС] | |
|
DrOffset, все верно, то я просто немного затупил
0
|
|
|
What a waste!
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
|
|
| 23.05.2015, 02:41 | |
|
DrOffset, ну так то некоторые шаблоны можно инстанциировать неполным типом, и тогда возможны рекурсивные типы данных без всяких указателей.
0
|
|
|
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
|
|
| 23.05.2015, 10:10 [ТС] | |
|
0
|
|
| 23.05.2015, 10:10 | |
|
Помогаю со студенческими работами здесь
20
Как создать экземпляр класса? Как создать экземпляр класса Как создать экземпляр класса? как создать экземпляр ui->TabWidget? Как создать экземпляр этого класса? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|