subrange(V, 0, 3);
和
project(V, range(0,3));
我问,因为我正在挖掘一些似乎使用这两种形式的代码(没有明显的押韵/理由一对另一种),但我看不出两者之间有什么区别......只是想要检查以确保我没有错过任何东西。
答案 0 :(得分:1)
看着它,我已经确认没有区别 - 子范围只是项目常见情况的简单包装,在这些情况下:
subrange(V, 0, 3);
project(V, range(0,3));
......他们最终完全相同。所以使用其中任何一个都应该没问题,只要你保持一致!
对于更好奇的......子范围:
template<class V>
vector_range<V> subrange (V &data, typename V::size_type start, typename V::size_type stop) {
typedef basic_range<typename V::size_type, typename V::difference_type> range_type;
return vector_range<V> (data, range_type (start, stop));
}
项目确实:
template<class V>
vector_range<V> project (V &data, typename vector_range<V>::range_type const &r) {
return vector_range<V> (data, r);
}
..因为vector_range :: range_type被定义为
typedef basic_range<size_type, difference_type> range_type;
...即,确切地说,在子范围内使用的是两种形式相同的。