|
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
|
||||||
Кортежи, метафункции и все, все, все.03.12.2011, 00:26. Показов 2501. Ответов 8
Метки нет (Все метки)
Цель — модифицировать заданный кортеж (например, "std::tuple") путём добавления в него новых типов или удаления существующих.
Сперва попробовал создать кортеж при помощи "boost::mpl::vector" и "boost::mpl::inherit", но проблема в том, что результат эмпээлевских метафункций неопределён, и, например, "pop_back<vector>::type" не является вектором. А мне нужно получить честный кортеж (пусть даже и сложного типа), т.к. далее нужно получить доступ к его элементам. Решил написать свои метафункции. Вставка в начало и в конец и удаление из начала — тривиальны и компилируются за константное время — всё отлично. Но вот удаление с конца, к сожалению, так хорошо реализовать не удалось. А именно: удалось получить только линейное время. Текст программы
Итак, вопрос первый. Может, я плохо искал? Можно ли с помощью "Буста" добиться желаемого результата? Вопрос второй. Есть ли идеи, как можно модифицировать метафункцию "pop_back" так, чтобы она компилировалась за константное время? Вопрос третий. Обратите внимание на "do_pop_back". Как думаете, православно ли подобное оперирование со списками типов (я имею в виду оборачивание в "void (...)")? По крайней мере, это лучший из пришедших в голову вариантов.
1
|
||||||
| 03.12.2011, 00:26 | |
|
Ответы с готовыми решениями:
8
Переставить элементы массива так, чтобы сначала располагались все 0, затем все 1, а затем все 5 Все отрицательные элементы массива перенести в начало, а все остальные в конец Builder C++ Мне нужна инфа все о StringGrid, и вообще все о Grid |
|
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
|
|
| 03.12.2011, 01:27 [ТС] | |
|
niXman, можно скромный вопрос: ты читал сообщение?
0
|
|
|
|
||
| 03.12.2011, 01:28 | ||
|
и вообще, boost::mpl это в 98% полностью компайл-тайм, т.е. в рантайме ты не получишь список типов умеющий хранить значения. для этого существует boost.fusion, по истине гениальное изобретение. вся мощь компайл-тайм + отражение в ран-тайм.
Добавлено через 47 секунд
0
|
||
|
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
|
|
| 03.12.2011, 01:34 [ТС] | |
|
niXman, прекрасно. В таком случае, можешь ли показать конкретный пример реализации цели? Потому что все ссылки, которые ты тут накидал, в том числе и про "Фьюжн", я исходил вдоль и поперёк, но решения там не нашёл.
0
|
|
|
|
||||||
| 03.12.2011, 01:47 | ||||||
проблема-то в чем?
1
|
||||||
|
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
|
|
| 03.12.2011, 11:54 [ТС] | |
|
niXman, чудесно! Только как теперь создать экземпляр класса "tupleN"?
Чтобы оценить всю серьёзность вопроса, предлагаю перейти по ссылке: http://liveworkspace.org/code/... 21aa37fa0e Это первое. И второе: ты видимо, всё-таки невнимательно читал первое сообщение, потому что я говорил, что мне нужно получить настоящий кортеж, к элементам которого можно стандартным образом получить доступ, а не абы какой обёрточный класс. Добавлено через 3 минуты И ещё, товарищи, просьба всё-таки обратить внимание на второй и третий вопросы первого сообщения.
0
|
|
|
|
|||||||||
| 03.12.2011, 14:54 | |||||||||
![]() Добавлено через 1 минуту
Добавлено через 2 минуты
0
|
|||||||||
|
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
|
|||
| 03.12.2011, 15:31 [ТС] | |||
Я это реализовал. Но хотел узнать, есть ли аналогичная возможность в "Бусте". Ты же накидал ссылок на известные мне решения, про которые я в самом начале сказал, что они не работают. В общем, ясно, "Бустом" не получится. Буду пользоваться своими метафункциями. А по другим вопросам есть мысли? Как улучшить удаление с конца?
0
|
|||
| 03.12.2011, 15:31 | |
|
Помогаю со студенческими работами здесь
9
Переставить все максимальные элементы списка в его конец, все минимальные в начало
Переставить элементы массива так, чтобы сначала располагались все нули, затем все единицы, а затем все пятерки
Записать в один файл все четные числа, а в другой – все нечетные Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит предопределенное значение перечислений.
Процедура. . .
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|