144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4

Как организовать перебор типов через цикл в 98 стандарте с++?

20.07.2020, 22:37. Показов 4590. Ответов 51
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Читал книга Андрея Александреску нашёл эти коды (я распрашивал как их использовать в предыдущих своих темах).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
template <class T, class U>
struct Typelist
{
typedef T head; 
typedef U Tail;
};
template <class TList, unsigned int index> struct TypeAt;
        
        template <class Head, class Tail>
        struct TypeAt<Typelist<Head, Tail>, 0>
        {
            typedef Head Result;
        };
 
        template <class Head, class Tail, unsigned int i>
        struct TypeAt<Typelist<Head, Tail>, i>
        {
            typedef typename TypeAt<Tail, i - 1>::Result Result;
        };
Если возможно создать кортёж, можно ли с помощью этих технологий организовать перебор элементов через цикл (очень надо помогите сделать)?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.07.2020, 22:37
Ответы с готовыми решениями:

LocalStorage - как организовать перебор элементов по определенному признаку через цикл for
Например, есть localStorage и в нем находится несколько объектов - это товары. *Наполняем корзину товаров*/ function...

Перебор файла посимвольно, как организовать цикл, работающий до конца файла.
Нужно перебрать файл посимвольно и, учитывая спецсимволы записать содержимое файла в Memo1. Помогите пожалуйста организовать цикл...

Цикл: Как грамотно организовать цикл с получением количества верных и неверных ответов?
Доброго времени суток, товарищи. Вот есть у меня два рандомно генерируемых числа, проверка произведения которых проверяется вводом ответа...

51
 Аватар для zayats80888
6353 / 3524 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
18.10.2020, 22:30
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Croessmah Посмотреть сообщение
Почему же я там нашел всё что нужно?
Кликните здесь для просмотра всего текста
0
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
18.10.2020, 23:22
Цитата Сообщение от Nexi99 Посмотреть сообщение
но тут же нету параметров
Так это и не шаблон, а его полная специализация. Она описывает то, как будет строиться экземпляр по шаблону в случае, если T будет задано как unsigned char.
0
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
19.10.2020, 01:12  [ТС]
Если не секрет сколько времени у вас ушло чтобы построить данную рекурсию, строчек кода довольно не мало. Я специфику то понял но объяснить конечно подетально не могу, изучаю пока эту тематику.
0
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
19.10.2020, 01:34
Цитата Сообщение от Nexi99 Посмотреть сообщение
Если не секрет сколько времени у вас ушло чтобы построить данную рекурсию, строчек кода довольно не мало. Я специфику то понял но объяснить конечно подетально не могу, изучаю пока эту тематику.
10 минут примерно.
0
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
19.10.2020, 02:25  [ТС]
Цитата Сообщение от Nexi99 Посмотреть сообщение
C++
1
2
3
class TupleImpl<Typelist<T, U>, I>
: public TupleElement<T, I>
, public TupleImpl<U, I + 1>
{ };
Почему здесь скобочки { } стоят когда описание класса уже закончено обычно они открываются ранее и все методы и параметры пишутся в нём?
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
19.10.2020, 09:10
Цитата Сообщение от Nexi99 Посмотреть сообщение
Почему здесь скобочки { }
Потому что класс "пустой" - не добавляет ничего нового.
0
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
19.10.2020, 20:58
Цитата Сообщение от Nexi99 Посмотреть сообщение
Почему здесь скобочки { } стоят когда описание класса уже закончено обычно они открываются ранее и все методы и параметры пишутся в нём?
Они открыты и закрыты там, где должны. Просто у этого класса нет собственных "методов и параметров".
0
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
20.10.2020, 02:31  [ТС]
Цитата Сообщение от DrOffset Посмотреть сообщение
Они открыты и закрыты там, где должны. Просто у этого класса нет собственных "методов и параметров".
Под утро дошло.
Цитата Сообщение от DrOffset Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
template < 
    typename T1 = NullType, typename T2 = NullType, typename T3 = NullType,
    typename T4 = NullType, typename T5 = NullType
>
class MakeList
{
    typedef typename MakeList< T2, T3, T4, T5 >::Result Tail;
public:
    typedef Typelist<T1, Tail> Result;
};
template <>
class MakeList<>
{
public:
    typedef NullType Result;
};
Почему здесь 2 раза прописывается MakeList, второй рас мы его переопредиляем наследуем или что с ним делаем?
Эту строку typedef typename MakeList<T2, T3, T4, T5>::Result Tail; я понимаю так, в поле MakeList<T2, T3, T4, T5> мы находим Result и назначаем всей этой цепочке имя Tail. также возникает вопрос откуда мы взяли элемент Result, если он не возник?

Добавлено через 45 секунд
и описан ниже в public

Добавлено через 2 минуты
Также не понятно почему первый раз опущен Т1?

Добавлено через 1 минуту
складывается впечатление что здесь устанавливаются границы T1, Tail чтобы поместить T2, T3, T4, T5

Добавлено через 2 минуты
Также не понятно зачем 2 списка один такой T1, T2, T3, T4, T5 второй T2, T3, T4, Т5, NullType?

Добавлено через 5 минут
здесь вроде понятно
C++
1
2
3
4
5
6
7
template <class TList> struct Length;
template <> 
struct Length< NullType >
{
    enum { value = 0 };//позже он будет равен 3ём если 3 элемента из примера, но список на 5ть элементов, но я все
//5ть не загонял
};
Добавлено через 2 минуты
внутри этой TypeAt структуры 2 элемента
C++
1
template <class TList, unsigned int Index> struct TypeAt;
один любой тип грубо говоря class TList
второй unsigned int Index

Добавлено через 3 минуты
а дальше что опять переопределение
C++
1
2
3
4
5
template <class Head, class Tail, unsigned int Index>
struct TypeAt<Typelist<Head, Tail>, Index>
{
    typedef typename TypeAt<Tail, Index - 1>::Result Result;
};
очень плохо что нет функции не могу понять как счётчик считает или вычитается.
0
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
20.10.2020, 13:29
Nexi99, на все ваши вопросы я уже ответил выше. В отличие от самого кода, на тот пост я потратил 30 минут, это непозволительно много для бесплатной помощи.
2
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
20.10.2020, 17:58  [ТС]
Цитата Сообщение от DrOffset Посмотреть сообщение
на все ваши вопросы я уже ответил выше. В отличие от самого кода, на тот пост я потратил 30 минут, это непозволительно много для бесплатной помощи.
ну что тут уж сделаешь если много чего не понятно. В целом понятно как оно работает но собрать своё что-то такое я не смогу конечно.
0
21.10.2020, 07:19

Не по теме:

Nexi99, может быть, своё Вам нужно не такое, а чуть проще.

0
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
21.10.2020, 07:38  [ТС]
Цитата Сообщение от politoto Посмотреть сообщение
может быть, своё Вам нужно не такое, а чуть проще.
А проще его тут и не запишешь, мне даже не понятно почему по умолчанию это все не реализовано, если бы я создавал язык я бы реализовал такое изначально. Многие языки программирования такое и не поддерживают даже видимо всё же это сложно, да и я давно изучаю эту тему тонны материалов прочитано но эти детали конечно ещё сложны для меня.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.10.2020, 07:38

Перевести строку, содержащую путь к файлу в стандарте ANSI С, в строку в стандарте фирмы Borland
ЗАДАНИЕ: Согласно стандарту ANSI С, при задании пути к файлу в программе на языке С, каталоги разделяются символом &quot;/&quot;, а в...

Как организовать перебор png файлов из ресурса?
Помогите решить проблемму: Как можно организовать следующее: есть обьект picturebox, есть ресурс: изображение в виде PNG файла 1.png,...

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

Как организовать цикл (С++)?
Как организовать цикл (С++), опроса (любой) клавиши клавиатуры? Например до 10 раз. Кто подскажет где можно прочесть или подсмотреть?...

Как организовать цикл?
Здравствуйте. Вообщем имеется уравнение,в правой части которого идёт бесконечное сложение.Слагаемые появляются по такому закону x -...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
52
Ответ Создать тему
Опции темы

Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru