Недавно я столкнулся с этой загадкой, наконец смог найти хакерский ответ (с использованием индексных массивов) и захотел поделиться им (ответ ниже). Я уверен, что есть ответы, использующие рекурсию шаблона, и ответы, использующие boost; если вам интересно, поделитесь другими способами это сделать. Я думаю, что наличие всего этого в одном месте может принести пользу другим и быть полезным для изучения некоторых интересных приемов метапрограммирования шаблонов C++11.
Задача:
Даны два кортежа одинаковой длины:
auto tup1 = std::make_tuple(1, 'b', -10);
auto tup2 = std::make_tuple(2.5, 2, std::string("even strings?!"));
Как создать функцию, которая «сархивирует» два кортежа в гетерогенный кортеж пар?
std::tuple<
std::pair,
std::pair,
std::pair > result =
tuple_zip( tup1, tup2 );
Где
std::get(result) == std::make_pair(1, 2.5);
std::get(result) == std::make_pair('b', 2);
std::get(result) == std::make_pair(-10, std::string("even strings?!"));
Подробнее здесь: https://stackoverflow.com/questions/113 ... in-c11-stl
Как создать функцию, которая сжимает два кортежа в C++11 (STL)? ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
C++: скопируйте контейнер STL в контейнер STL, используя лямбда-выражение
Anonymous » » в форуме C++ - 0 Ответы
- 39 Просмотры
-
Последнее сообщение Anonymous
-
-
-
C++: скопируйте контейнер STL в контейнер STL, используя лямбда-выражение
Anonymous » » в форуме C++ - 0 Ответы
- 32 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Почему в контейнерах STL в контейнерах STL нет перегрузки RVALUE Ref-квалификации?
Anonymous » » в форуме C++ - 0 Ответы
- 8 Просмотры
-
Последнее сообщение Anonymous
-