boost :: number :: ublas中的项目和子范围函数有什么区别?

时间:2012-08-21 22:37:31

标签: boost project numeric ublas

是的,

之间有什么区别吗?
subrange(V, 0, 3);

project(V, range(0,3));

我问,因为我正在挖掘一些似乎使用这两种形式的代码(没有明显的押韵/理由一对另一种),但我看不出两者之间有什么区别......只是想要检查以确保我没有错过任何东西。

1 个答案:

答案 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;

...即,确切地说,在子范围内使用的是两种形式相同的。