我想知道,不使用典型的递归函数,但使用boost::hana
为例,如何用最简单的方式转换工具boost
和std
工具的一个对象以下类型(例如):从N元素的元组到N/2对的元组
std::tuple<int, double, char, double>
到类型的对象:
std::tuple<std::pair<int, double>, std::pair<char, double> >;
我一直在寻找的boost::hana
文档中,但我没有发现任何简单的方法来做到这一点不是编程它手动机智h递归模板函数(我必须说有hana的功能我无法理解)。
注:我脑子里想的是什么最初是从0创建一个整数范围为N(hana::range
),然后过滤他们甚至两组赔率指数,以及获得,每个索引组,相应的值并在两个列表中成对应用以创建std::pair
s ...这些步骤太多并且可以通过手动实现更容易实现;但我确定在hana文档中有一些我错过的东西。
我想接受的答案是做到这一点的最好办法。你可以使用'hana :: range'和'hana :: unpack'来使这个看起来更好看一些,但它本质上是一样的。 –
@LouisDionne我尝试过不同的方法,最简单的方法是:创建一个'hana :: range',为奇数和偶数索引创建一个分区,然后使用'hana :: unpack'和'hana :: zip_with'一个创建对的函子。其他解决方案是创建一个从0到N/2的范围,然后使用'hana :: chain'或'hana :: transform'来对每个进行相应的* 2和* 2 + 1操作,切片“每个索引序列两次。太痛苦了......;旧样式仍然较短。 –
下面是我的意思:https://wandbox.org/permlink/nLG7RC7ieZzK5io4。就像我所说的那样,它更像哈娜式的,但它本质上与公认的答案相同。 –