我有一些(模板)迭代器對Iterator begin1
和Iterator end1
。我有一個功能foo,帶簽名什麼是快速和骯髒的方式來獲取適應性迭代器?
template <typename ForwardIterator>
void foo(ForwardIterator begin, ForwardIterator end);
它在那個範圍上做了些什麼。現在,我希望foo
不會影響實際的範圍元素,而是會影響這些元素通過一些lambda或某種函數bar
的轉換。我不能使用std :: transform或以其他方式使用臨時存儲的轉換值,因爲這將佔用太多的空間或因爲我不允許在堆上分配任何東西。
現在,我知道我可以自己實現某種適配迭代器,但我寧願使用現成的東西,而不是重新發明輪子。
那麼,什麼是快速和骯髒的方式來獲得適當的適配迭代器對,我可以通過foo
做我想要的?即對我來說,能夠調用
foo(magic(begin), magic(end))
或
auto new_pair = magic(begin, end);
foo(new_pair.first, new_pair.second);
?
Try @ eric-niebler's [range-v3 library](https://github.com/ericniebler/range-v3)最終會成爲標準! –
[boost迭代器適配器](http://www.boost.org/doc/libs/1_62_0/libs/iterator/doc/index.html)是另一種替代方案 – Jarod42
@BrianRodriguez:你能更具體/明確嗎?那成了答案? – einpoklum