0
我有任何容器不提供隨機訪問迭代器,目標是創建一個適配器,它接受輸入這樣的迭代器並向容器提供隨機訪問迭代器接口。適配器將任何迭代器轉換爲隨機訪問迭代器
我不知道如何使用boost::iterator_facade
,因爲它是一個有點混亂: - /上有堆棧溢出一些例子,但我不知道如何使用它們(here)
任何鏈接/例子可能是很有幫助。 (我讀的例子在boost
他們有點難以消化考慮我在boost
我有任何容器不提供隨機訪問迭代器,目標是創建一個適配器,它接受輸入這樣的迭代器並向容器提供隨機訪問迭代器接口。適配器將任何迭代器轉換爲隨機訪問迭代器
我不知道如何使用boost::iterator_facade
,因爲它是一個有點混亂: - /上有堆棧溢出一些例子,但我不知道如何使用它們(here)
任何鏈接/例子可能是很有幫助。 (我讀的例子在boost
他們有點難以消化考慮我在boost
經驗,你不希望這樣做。
要麼
Container Ranges
concept from his Ranges proposal如果你真的堅持,是的,你可以實現你的想法,但我不明白它會獲得什麼,除了隱藏運行時/存儲成本。尤其是,它不會是微不足道的需要,以保持一生around.¹
輕微相關:升壓靈有boost::spirit::multi_pass
適配器,但只從升級到InputIterator
ForwardIterator
(允許回溯)。
¹(你做什麼,當你有一個臨時性的即已經是一個隨機存取範圍?你不能把對它的引用,但你也應該不必複製它。)
該標準要求所有的操作上一個迭代器採取攤銷不變的時間。你不能採用一個迭代器,它用'N(N)'時間來增加'N',並且神奇地把它變成一個迭代器,它需要'O(1)'時間來做同樣的事情。結果不會滿足隨機訪問迭代器的複雜性要求。 – 2014-12-19 05:34:40
是否使用'std :: advance'會解決你的問題? – Anycorn 2014-12-19 05:41:01
同意了,我理解迭代器和容器的設計和概念......但即使性能最差也可能實現。如果是這樣,我只想自己實現它,但我只需要任何想法/開始。謝謝! – KawKaw 2014-12-19 05:42:41