Не получается разобраться с кодом инстанцирования кортежа20.10.2020, 20:13. Показов 7023. Ответов 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 по ключу состоящий из кортежа, и отсортировать по второму элементу кортежа Разобраться с кодом Разобраться с кодом
Разобраться с кодом Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни
1. Механизм отложенного высвобождения фосфора
Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ
Реализована разная скорость. . .
|
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2.
Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
|
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её.
Всё это стресс конечно. Почему?. . .
|
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот.
Ларри Уингет
|
|
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
|
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров
В текущей версии модели успешно реализован ключевой механизм. . .
|
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям
Реализованные компоненты:
Механизм закисления почвы через протонную помпу
Конкуренция между типами микориз
pH как триггер сукцессии
C/ P соотношение. . .
|
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
|