我想将多个范围(eqvectors)连接到一个范围内,而不是将它们复制到新容器中,这样性能会更好。
它用于稍后在整个范围内进行迭代。
#include <iostream>
#include <vector>
#include <boost/range/adaptors.hpp>
#include <boost/range.hpp>
const std::vector<int> vec1 = { 0, 1, 2, 3 };
const std::vector<int> vec2 = { 10, 11, 12, 13 };
const std::vector<int> vec3 = { 20, 21, 22, 23 };
const std::vector<int> vec4 = { 30, 31, 32, 33 };
std::vector< std::vector<int>> all{vec1, vec2, vec3, vec4};
int main() {
auto range = boost::adaptors::transform( all, [&](auto &v) {
return boost::make_iterator_range( v );
} );
for( const auto &i:range) {
std::cout << i << ", ";
}
}
上面打印了这个;
0123, 10111213, 20212223, 30313233,
但我真正想要的是这个;
0, 1, 2, 3, 10, 11, 12, 13, 20, 21, 22, 23, 30, 31, 32, 33,