![]() |
![]() ![]() ![]() ![]() |
![]() |
Vector ProxiesBoost , ,
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Parameter | Description | Default |
|---|---|---|
<V> |
Тип векторной ссылки. |
Если указанный диапазон выходит за пределы индексного диапазона вектора, то<vector_range>не является хорошо сформированной векторной экспрессией. То есть доступ к элементу, находящемуся вне индексного диапазона вектора,неопределён.
Нет, кроме тех, которые налагаются требованиямиВекторной экспрессии.
<vector_expression<vector_range<V> >>
| Member | Description |
|---|---|
<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> |
<const_iterator>Возвращается, указывая на начало<vector_range>. |
<const_iterator end () const> |
<const_iterator>Возвращается, указывая на конец<vector_range>. |
<iterator begin ()> |
Возвращает<iterator>, указывая на начало<vector_range>. |
<iterator end ()> |
Возвращается<iterator>, указывая на конец<vector_range>. |
<const_reverse_iterator rbegin () const> |
Возвращает<const_reverse_iterator>, указывая на начало обратного<vector_range>. |
<const_reverse_iterator rend () const> |
Возвращает<const_reverse_iterator>, указывая на конец обратного<vector_range>. |
<reverse_iterator rbegin ()> |
Возвращается<reverse_iterator>, указывая на начало обратного<vector_range>. |
<reverse_iterator rend ()> |
Возвращает<reverse_iterator>, указывая на конец обратного<vector_range>. |
Свободные<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.
| Parameter | Description | Default |
|---|---|---|
<V> |
Тип векторной ссылки. |
Если указанный срез выходит за пределы индексного диапазона вектора, то<vector_slice>не является хорошо сформированной векторной экспрессией. То есть доступ к элементу, находящемуся вне индексного диапазона вектора,неопределён.
Нет, кроме тех, которые налагаются требованиямиВекторной экспрессии.
<vector_expression<vector_slice<V> >>
| Member | Description |
|---|---|
<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> |
<const_iterator>, что указывает на начало<vector_slice>. |
<const_iterator end () const> |
<const_iterator>Возвращается, указывая на конец<vector_slice>. |
<iterator begin ()> |
Возвращает<iterator>, указывая на начало<vector_slice>. |
<iterator end ()> |
Возвращает<iterator>, указывая на конец<vector_slice>. |
<const_reverse_iterator rbegin () const> |
Возвращает<const_reverse_iterator>, указывая на начало обратного<vector_slice>. |
<const_reverse_iterator rend () const> |
<const_reverse_iterator>возвращает, указывая на конец обратного<vector_slice>. |
<reverse_iterator rbegin ()> |
Возвращает<reverse_iterator>, указывая на начало обратного<vector_slice>. |
<reverse_iterator rend ()> |
<reverse_iterator>, указывающий на конец обратного<vector_slice>. |
Свободные<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 Йорг Уолтер, Матиас Кох
На использование, модификацию и распространение распространяется лицензия Boost Software License, Version 1.0. (См. сопроводительный файл LICENSE_1_0.txt или копию на) http://www.boost.org/LICENSE_1_0.txt.
Статья Vector Proxies раздела может быть полезна для разработчиков на c++ и boost.
:: Главная :: ::
реклама |