我想知道,不使用典型的遞歸函數,但使用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。就像我所說的那樣,它更像哈娜式的,但它本質上與公認的答案相同。 –