升壓範圍庫(http://www.boost.org/doc/libs/1_35_0/libs/range/index.html)允許我們將一對迭代器抽象爲一個範圍。現在我想將兩個範圍合併爲一個,即:升壓範圍庫:依次遍歷兩個範圍
給出了兩個範圍r1和r2,定義r遍歷[r1.begin(),r1.end()[然後[r2begin(),r2 。結束()[。有什麼方法可以將r定義爲使用r1和r2的範圍?
升壓範圍庫(http://www.boost.org/doc/libs/1_35_0/libs/range/index.html)允許我們將一對迭代器抽象爲一個範圍。現在我想將兩個範圍合併爲一個,即:升壓範圍庫:依次遍歷兩個範圍
給出了兩個範圍r1和r2,定義r遍歷[r1.begin(),r1.end()[然後[r2begin(),r2 。結束()[。有什麼方法可以將r定義爲使用r1和r2的範圍?
我再次需要這個,所以我有第二次看。有一種方法可以使用boost/range/join.hpp來連接兩個範圍。不幸的輸出範圍類型不被包括在所述接口:
#include "boost/range/join.hpp"
#include "boost/foreach.hpp"
#include <iostream>
int main() {
int a[] = {1, 2, 3, 4};
int b[] = {7, 2, 3, 4};
boost::iterator_range<int*> ai(&a[0], &a[4]);
boost::iterator_range<int*> bi(&b[0], &b[4]);
boost::iterator_range<
boost::range_detail::
join_iterator<int*, int*, int, int&,
boost::random_access_traversal_tag> > ci = boost::join(ai, bi);
BOOST_FOREACH(int& i, ci) {
std::cout << i; //prints 12347234
}
}
我發現使用編譯器信息的輸出類型。 C++ 0x auto
也將在那裏相關。
我想你必須做一個自定義的迭代器,它會在到達r1.end()時將'r1.end()滾動到r2.begin()。然後,該迭代器的Begin()和end()將被合併到您的範圍r中。 AFAIK沒有標準的增強功能,會給你這種行爲。