Не получается разобраться с кодом инстанцирования кортежа20.10.2020, 20:13. Показов 6974. Ответов 97
Метки нет (Все метки)
Ниже будет написан код и я по модульно буду сам задавать вопросы, специфику то понял но много не понятно.
struct Typelist. Значит эту строку typedef typename MakeList<T2, T3, T4, T5>::Result Tail; я понимаю так, в поле MakeList<T2, T3, T4, T5> мы находим Result и назначаем всей этой цепочке имя Tail. Возникает вопрос откуда мы взяли элемент Result, если он не возник, он описан в public: который находится ниже этой строки?
0
|
|||||||||||
| 20.10.2020, 20:13 | |
|
Ответы с готовыми решениями:
97
Не получается разобраться с кодом . Не получается разобраться с кодом (структуры)
|
| 01.12.2020, 10:25 | |
|
Не по теме: Nexi99, Вы создали отдельную тему
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||||
| 01.12.2020, 10:37 | ||||
|
а если количество "известно заранее", то на такое количество и создавать новый аггрегатный класс... вижу так... делать не берусь - время однако... но я бы делала так... мне кажется вы путаете контейнер для кортежА и агрегатный контейнер (да хоть тот же вектор) для совокупности этих кортежЕЙ - 1-й - это ваш элемент - индексируйте доступ к его составный частям <>..., 2-й - это ваша совокупность элементов - индексируйте доступ ко всему элементу [] целиком...... - например, в динамическом массиве (который сделайте основой агрегатного класса - ! отдельного класса, или просто возьмите класс vector для помещения в него свох кортежей) и обращайтесь к каждому, итерируя совокупность (тем более вы даже знаете на сколько элементов - кортежей - она вам нужна)... можете при итерировании вашей совокупности выделять элемент в temp = ваш кортеж, а уже в нём temp.get<0>() и т.д., что надо...p.s. может этот foreach натолкнёт на мысль p.p.s. я просто даже затрудняюсь понять, что вас смущает, - поэтому и делать вместо вас не берусь... цикл for в аггрегатном классе оформить не сложно... а рекурсия, мне всё равно кажется излишней, если структура контейнера одна, заранее известна, и неизменна... имхо... отключаюсь... успехов Добавлено через 4 минуты ой не надо - лучше кратко изложить выкладки оставшегося! непонимания... но я всё равно не хочу за ТСа собирать вектор (или список) его кортежей в нужный ему по размеру контейнер (список, например) - банально, а время займёт... если я правильно поняла его задачу... то всё-таки рекурсия необязательна... достаточно, агрегировать - даже for-loop'ом
0
|
||||
| 01.12.2020, 10:53 [ТС] | ||||
|
0
|
||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||||
| 01.12.2020, 12:10 | ||||
|
или, как прозвучало: p.s. рефакторить или нет - это уже на усмотрение ТСа... вот чувствую, что мало кода на его тз не получится... имхо Добавлено через 1 минуту Добавлено через 18 минут просто вы хотите сказать(определить), что надо, в runtime, а иметь это в наличии уже с момента compile-time... вот и придётся ещё там (в compile-time) заложить все возможные варианты для того, чтобы уже были в наличиии в runtime (совет от Zirak или std::variant)... а по-др никак
1
|
||||
| 01.12.2020, 16:22 [ТС] | ||
|
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||||
| 01.12.2020, 17:46 | ||||
|
т.е. ДЛЯ run-time надо, чтобы или switch-ами были уже заготовлены все возможные сочетания того, из чего вы кортеж хотите делать... или динамически создавать нужный кортеж из полиморфного класса (std::variant - это просто класс для формирования run-time полиморфизма)... ну или архитектурно разделять функцию, создающую кортеж и поставляемый в неё список нужных полей для кортежа == а это и есть полиморфное динамическое создание объекта, для которого подклассы уже должны быть скомпилированы - хоть с шаблоном, хоть поштучно -- но Класс(ы) уже должен(ны) быть в наличии -- а как будете вы его(их) в run-time'e подключать в работу - хоть switch'ами, хоть std::variant visit, хоть наследованием -- это уже дело вкуса... я ведь правильно вас поняла, что вы думаете, что этот MyList вы в run-time'e сможете формировать? (чего и хотите)... НЕТ... не забывайте, как работают шаблоны, - во время компиляции из них формируются ВСЕ возможные типы... точка... в run-time'e у вас будут только всё, что наплодилось из шаблона, - не больше, ни меньше, ни самого шаблона... так вот, чтобы в compile-time вы наплодили всё, что вам нужно -- #2 и посоветовал вам специализацию... === а чтобы динамически (динамически т.е. в run-time'e) создавать кортежи с избранными полями для MyList - уже 2 человека вам напоминают, как выбирать в run-time (хоть swith, хоть variant, хоть абстрактный класс)...... НО то из чего хотите выбирать УЖЕ должно быть скомпилировано!.. а не абстрактно описано в шаблоне... повторюсь, после компиляции шаблона уже нет, но есть все типы, созданные на основе его описания - в принципе они тоже ещё абстракции (просто статически полиморфные)... не знаю, как ещё вам написать, что в ваш MyList вы уже ничего не подставите в run-time... но динавически (в run-time) можете выбрать лишь из имеющегося наплодившегося... и хотите вы на самом деле динамического полиморфизма!.. (а не статического полученного из шаблона)... === вы с полиморфизмом и способами его применения вообще знакомы?.. - там в run-time и задавайте нужные параметры для уточнения класса... НО Класс УЖЕ должен быть, а не шаблон... точнее классы сформированные из этого шаблона... а конкретику уже в run-time уточняете в конкретных объектах от этих классов (с тем или иным набором полей для кортежа) в run-time... всё равно, что от абстрактного класса уточнить класс-потомок -- если хотите все возможные вариации кортежей (с любым MyList набором полей) свести к общему родителю для возможности динамически выбирать нужного потомка... вобщем это уже будет динамический полиморфизм Добавлено через 4 минуты Добавлено через 11 минут (только вам нужно ещё проще - single dispatching может быть достаточно в вашем случае - там же есть) потому что нравятся или не нравятся вам коты или собаки (в смысле кортежи созданные из разного набора параметров) - вам всё равно (т.е. вы не говорили, что вы ещё и выбирать в run-time'e хотите, как с ними дальше обращаться по выбору в run'time, не по определению из класса скомпилированного)
0
|
||||
| 01.12.2020, 18:47 [ТС] | ||||||||||||
Tuple<> tpl; я не знаю список должен расплодится от одного элемента r1 внутри которого массив yВот смотрите на старом примере, писать лучше тут Приведите пример инстанцирования 1го объекта
dd будет создан в зависимости от длины списка, так вот мне нужно список убрать и поставить структуру.
0
|
||||||||||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|||||||
| 01.12.2020, 20:37 | |||||||
|
а вы же хотите вы создайте класс/структуру user-defined, который/ая будет реализовывать нужный вам функционал... как минимум size() = НО ЭТО ЛИРИКА... (т.к. всё-таки говорим о шаблоне заданном, а не о понятиях библиотеки std, поэтому как назвали в шаблоне, так и понимаем -- неважно, что std понимает по-другому) === ! главное, вы понимаете ПОЧЕМУ вам структура больше нравится, чем список? == может вы вообще не тот код адаптируете под свои нужды... напишите, чем список не устраивает и чем вам выгодна структура?.. что хотите получить взамен (кроме смены слова, которым обозвали в шаблоне, и/или смены контейнера, в который вы хотите что-то запихнуть на входе или выходе) p.s. кстати не забывайте - у вас шаблон - он расплодится на все родные для c++ основные типы и ваши user-defined ... вы кстати не пояснили #2-му, почему вам его совет о специализации не понравился... Добавлено через 5 минут условие выхода из рекурсии по структуре, которую ещё не сделали, - вы продумали? (по совету от #2) Добавлено через 8 минут p.p.s. хотя, честно говоря, коль говорим о шаблоне, то вообще не понимаю, какой спор о словах - myList или struct... но вот sizeof лично у меня навевает те сомнения в вашей логике, которые озвучила... как и моё видение пути их преоделения озвучила - пишите свою user-defined struct в которой отметите ваш size, чтобы знать Как специализировать для прекращения рекурсии...... Добавлено через 11 минут p/p/p/s вот кстати в новой ветке, может, хоть нарисуйте, что есть и что надо... хоть блок-схему... хоть UML-диаграмму... а то, что-то с кодом, вы ещё не доказали, что это тот код, который можно так модифицировать, как вы хотите... имхо Добавлено через 8 минут и если раньше вы хотели: то теперь вы хотите: где логика?
0
|
|||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||||||
| 01.12.2020, 21:26 | |||||||
0
|
|||||||
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
||
| 01.12.2020, 22:01 | ||
|
Буду использовать в качестве официального текста "Вы сами виноваты"-лицензии (OGL - outsource govnokod license)
0
|
||
| 01.12.2020, 22:37 [ТС] | ||||||||
arr1 должны быть одинаковыми и должны находится внутри, также arr1 должен быть структурой внутри которого и будет этот массив char.Добавлено через 7 минут
Добавлено через 49 секунд а в первом случае список состоящий из нескольких элементов.
0
|
||||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||||||
| 01.12.2020, 22:52 | |||||||
|
Nexi99, эти четыре сроки писать не надо. Это демонстрация доступа и все.
Добавлено через 39 секунд
0
|
|||||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|
| 02.12.2020, 07:15 | |
|
0
|
|
| 02.12.2020, 19:41 [ТС] | ||
char (&arr1)[1] = tpl.get<0>();Мне не понятно что происходит с левой половиной а мне то нужна правая её то я и буду использовать. Ну да позже человек написал что обратился. Примеров реализации моей задумки может быть не мало. Я ещё буду разбираться с этим всем вчера свою методику задумывал, но тоже не доделал голова разболелась.
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|||||||||
| 03.12.2020, 07:34 | |||||||||
намешал ваши 2 слова struct List (как вы хотели)...объявил он это здесь - в main'e предупредив вас p.p.s. и к вашей логике... - дело не в том, что круто, а в том, что понятно... главное, что должно быть понятно - ЭТО СТРОЙНАЯ (максимально короткая, простая и универсальная) ЛОГИКА, - когда она есть - вот это будет "круто"... а не мешанина из непонятных вам слов, да ещё на долгосрок не понятно как работающая... чем проще запись и универсальнее её работа - тем она гениальнее и в состоянии пережить года в вашем коде - обычно программисты равняются на это, а не на "круто" ... но вы же равняетесь на "круто" - и закапываетесь на первом же крутом повороте, не сумев справиться с её (записи) управлением... я, например, даже в страшном сне пока не могу и не хочу представлять себе, где такая смесь ваших рюшечек и бантиков может быть короче и работать надёжнее, чем даже если простоДобавлено через 5 минут (возможно, вы просто не пояснили ваше понимание слова "круто"?) Добавлено через 10 минут p.p.p.s ! сложностей в логике быть НЕ должно... их вам хватит в самом проекте, который берёте в разработку...
0
|
|||||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 03.12.2020, 13:16 | ||
|
Сам массив находится внутри tpl.
1
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||
| 03.12.2020, 17:13 | ||
|
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||||||
| 03.12.2020, 17:24 | ||||||
|
JeyCi, я понял что вы имели в виду, но указатели применительно к массивам здесь нигде не фигурируют. Если бы я написал так
1
|
||||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||
| 03.12.2020, 17:47 | ||
|
так всё-таки ноги на эту ссылку оттуда выросли, с того static_cast'a?
== (а указатели и ссылки не только ведь к массивам относятся -- просто на примере массива и с указанием источника примера о массивах - высказала своё видение, конечно, ещё не pro)
0
|
||
| 03.12.2020, 17:47 | |
|
Отсортировать Dictionary по ключу состоящий из кортежа, и отсортировать по второму элементу кортежа Разобраться с кодом Разобраться с кодом
Разобраться с кодом Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
|
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения:
- добавлена многоязычность
- добавлено снятие скриншотов
- добавлено поддержание бафов хождения по воде (для жреца, дк и шамана)
- и так, по. . .
|
|
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу)))
Критические ошибки, мешающие компиляции и. . .
|
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата)
Этот документ предназначен для того, чтобы новый чат Claude мог продолжить
работу без необходимости заново разбираться в. . .
|
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса
Калибровка параметров симбиотической модели: технический обзор
Содержание:
Введение
Постановка проблемы
Технические аспекты реализации
Процесс внедрения изменений
|
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0»
https:/ / ibb. co/ NnkGpfMd
Представленная интегрированная схема описывает непрерывную нелинейную. . .
|