模板类 vector_range<V>
允许寻址向量元素的子范围。
#include <boost/numeric/ublas/vector.hpp> #include <boost/numeric/ublas/vector_proxy.hpp> #include <boost/numeric/ublas/io.hpp> int main () { using namespace boost::numeric::ublas; vector<double> v (3); vector_range<vector<double> > vr (v, range (0, 3)); for (unsigned i = 0; i < vr.size (); ++ i) vr (i) = i; std::cout << vr << std::endl; }
定义于头文件 vector_proxy.hpp 中。
参数 | 描述 | 默认值 |
---|---|---|
V |
引用的向量类型。 |
向量表达式 .
如果指定的范围超出向量的索引范围,则 vector_range
不是一个良好形成的向量表达式。也就是说,访问向量索引范围之外的元素是未定义的。
无,除了 向量表达式 的要求所施加的那些。
vector_expression<vector_range<V> >
成员 | 描述 |
---|---|
vector_range (vector_type &data, const range &r) |
构造一个子向量。 |
size_type start () const |
返回子向量的起始位置。 |
size_type size () const |
返回子向量的大小。 |
const_reference operator () (size_type i) const |
返回第 i 个元素的值。 |
reference operator () (size_type i) |
返回第 i 个元素的引用。 |
const_reference operator [] (size_type i) const |
返回第 i 个元素的值。 |
reference operator [] (size_type i) |
返回第 i 个元素的引用。 |
vector_range &operator = (const vector_range &vr) |
赋值运算符。 |
vector_range &assign_temporary (vector_range &vr) |
赋值一个临时对象。可能会更改向量范围 vr 。 |
template<class AE> |
扩展赋值运算符。 |
template<class AE> |
将向量表达式赋值给子向量。赋值的左侧和右侧应独立。 |
template<class AE> |
计算赋值运算符。将向量表达式加到子向量上。 |
template<class AE> |
将向量表达式加到子向量上。赋值的左侧和右侧应独立。 |
template<class AE> |
计算赋值运算符。从子向量中减去向量表达式。 |
template<class AE> |
从子向量中减去向量表达式。赋值的左侧和右侧应独立。 |
template<class AT> |
计算赋值运算符。将子向量与标量相乘。 |
template<class AT> |
计算赋值运算符。将子向量除以标量。 |
void swap (vector_range &vr) |
交换子向量的内容。 |
const_iterator begin () const |
返回一个指向 vector_range 开头的 const_iterator 。 |
const_iterator end () const |
返回一个指向 vector_range 结尾的 const_iterator 。 |
iterator begin () |
返回一个指向 vector_range 开头的 iterator 。 |
iterator end () |
返回一个指向 vector_range 结尾的 iterator 。 |
const_reverse_iterator rbegin () const |
返回一个指向反向 vector_range 开头的 const_reverse_iterator 。 |
const_reverse_iterator rend () const |
返回一个指向反向 vector_range 结尾的 const_reverse_iterator 。 |
reverse_iterator rbegin () |
返回一个指向反向 vector_range 开头的 reverse_iterator 。 |
reverse_iterator rend () |
返回一个指向反向 vector_range 结尾的 reverse_iterator 。 |
自由函数 subrange
支持构造向量范围。
template<class V>
vector_range<V> subrange (V &data,
V::size_type start, V::size_type stop);
template<class V>
const vector_range<const V> subrange (const V &data,
V::size_type start, V::size_type stop);
自由函数 project
支持构造向量范围。现有的 matrix_range
可以与更远的范围组合。结果范围是使用现有范围的 compose
函数计算的。
template<class V>
vector_range<V> project (V &data, const range &r);
template<class V>
const vector_range<const V> project (const V &data, const range &r);
template<class V>
vector_range<V> project (vector_range<V> &data, const range &r);
template<class V>
const vector_range<V> project (const vector_range<V> &data, const range &r);
定义于头文件 vector_proxy.hpp 中。
V
是 向量表达式 的模型。线性复杂度取决于范围的大小。
#include <boost/numeric/ublas/vector.hpp> #include <boost/numeric/ublas/vector_proxy.hpp> #include <boost/numeric/ublas/io.hpp> int main () { using namespace boost::numeric::ublas; vector<double> v (3); for (int i = 0; i < 3; ++ i) project (v, range (0, 3)) (i) = i; std::cout << project (v, range (0, 3)) << std::endl; }
模板类 vector_slice<V>
允许寻址向量的切片。
#include <boost/numeric/ublas/vector.hpp> #include <boost/numeric/ublas/vector_proxy.hpp> #include <boost/numeric/ublas/io.hpp> int main () { using namespace boost::numeric::ublas; vector<double> v (3); vector_slice<vector<double> > vs (v, slice (0, 1, 3)); for (unsigned i = 0; i < vs.size (); ++ i) vs (i) = i; std::cout << vs << std::endl; }
定义于头文件 vector_proxy.hpp 中。
参数 | 描述 | 默认值 |
---|---|---|
V |
引用的向量类型。 |
向量表达式 .
如果指定的切片超出向量的索引范围,则 vector_slice
不是一个良好形成的向量表达式。也就是说,访问向量索引范围之外的元素是未定义的。
无,除了 向量表达式 的要求所施加的那些。
vector_expression<vector_slice<V> >
成员 | 描述 |
---|---|
vector_slice (vector_type &data, const slice &s) |
构造一个子向量。 |
size_type size () const |
返回子向量的大小。 |
const_reference operator () (size_type i) const |
返回第 i 个元素的值。 |
reference operator () (size_type i) |
返回第 i 个元素的引用。 |
const_reference operator [] (size_type i) const |
返回第 i 个元素的值。 |
reference operator [] (size_type i) |
返回第 i 个元素的引用。 |
vector_slice &operator = (const vector_slice &vs) |
赋值运算符。 |
vector_slice &assign_temporary (vector_slice &vs) |
赋值一个临时对象。可能会更改向量切片 vs 。 |
template<class AE> |
扩展赋值运算符。 |
template<class AE> |
将向量表达式赋值给子向量。赋值的左侧和右侧应独立。 |
template<class AE> |
计算赋值运算符。将向量表达式加到子向量上。 |
template<class AE> |
将向量表达式加到子向量上。赋值的左侧和右侧应独立。 |
template<class AE> |
计算赋值运算符。从子向量中减去向量表达式。 |
template<class AE> |
从子向量中减去向量表达式。赋值的左侧和右侧应独立。 |
template<class AT> |
计算赋值运算符。将子向量与标量相乘。 |
template<class AT> |
计算赋值运算符。将子向量除以标量。 |
void swap (vector_slice &vs) |
交换子向量的内容。 |
const_iterator begin () const |
返回一个指向 vector_slice 开头的 const_iterator 。 |
const_iterator end () const |
返回一个指向 vector_slice 结尾的 const_iterator 。 |
iterator begin () |
返回一个指向 vector_slice 开头的 iterator 。 |
iterator end () |
返回一个指向 vector_slice 结尾的 iterator 。 |
const_reverse_iterator rbegin () const |
返回一个指向反向 vector_slice 开头的 const_reverse_iterator 。 |
const_reverse_iterator rend () const |
返回一个指向反向 vector_slice 结尾的 const_reverse_iterator 。 |
reverse_iterator rbegin () |
返回一个指向反向 vector_slice 开头的 reverse_iterator 。 |
reverse_iterator rend () |
返回一个指向反向 vector_slice 结尾的 reverse_iterator 。 |
自由函数 subslice
支持构造向量切片。
template<class V>
vector_slice<V> subslice (V &data,
V::size_type start, V::difference_type stride, V::size_type size);
template<class V>
const vector_slice<const V> subslice (const V &data,
V::size_type start, V::difference_type stride, V::size_type size);
自由函数 project
支持构造向量切片。现有的 vector_slice
可以与更远的范围或切片组合。结果切片是使用现有切片的 compose
函数计算的。
template<class V>
vector_slice<V> project (V &data, const slice &s);
template<class V>
const vector_slice<const V> project (const V &data, const slice &s);
template<class V>
vector_slice<V> project (vector_slice<V> &data, const range &r);
template<class V>
const vector_slice<V> project (const vector_slice<V> &data, const range &r);
template<class V>
vector_slice<V> project (vector_slice<V> &data, const slice &s);
template<class V>
const vector_slice<V> project (const vector_slice<V> &data, const slice &s);
定义于头文件 vector_proxy.hpp 中。
V
是 向量表达式 的模型。线性复杂度取决于切片的大小。
#include <boost/numeric/ublas/vector.hpp> #include <boost/numeric/ublas/vector_proxy.hpp> #include <boost/numeric/ublas/io.hpp> int main () { using namespace boost::numeric::ublas; vector<double> v (3); for (int i = 0; i < 3; ++ i) project (v, slice (0, 1, 3)) (i) = i; std::cout << project (v, slice (0, 1, 3)) << std::endl; }
版权 (©) 2000-2002 Joerg Walter, Mathias Koch
使用、修改和分发受 Boost 软件许可协议 1.0 版的约束。(请参阅随附文件 LICENSE_1_0.txt 或在 https://boost.ac.cn/LICENSE_1_0.txt 复制)。