つまり、間に違いはありますか
subrange(V, 0, 3);
と
project(V, range(0,3));
?
両方の形式を使用しているように見えるコードを掘り下げているので(一方と他方の明確な韻/理由はありません)、2つの違いがわかりません...チェックしたかっただけです私が何かを逃していないことを確認してください。
調べてみたところ、違いがないことを確認しました。サブレンジは、プロジェクトの一般的なケースの簡単なラッパーであり、これらの場合は次のようになります。
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;
...つまり、サブレンジで使用されているものとまったく同じで、2つの形式は同じです。