Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Vector Proxies

Boost , ,

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Vector Proxies

Vector Range

Description

Шаблонный класс<vector_range<V>>позволяет адресовать поддиапазон векторного элемента.

Example

#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;
}

Definition

Определяется в заголовке vector_proxy.hpp.

Template parameters

Parameter Description Default
<V> Тип векторной ссылки.

Model of

Векторная экспрессия.

Если указанный диапазон выходит за пределы индексного диапазона вектора, то<vector_range>не является хорошо сформированной векторной экспрессией. То есть доступ к элементу, находящемуся вне индексного диапазона вектора,неопределён.

Type requirements

Нет, кроме тех, которые налагаются требованиямиВекторной экспрессии.

Public base classes

<vector_expression<vector_range<V> >>

Members

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>
vector_range &operator = (const vector_expression<AE> &ae)
>
Оператор расширенного назначения.
<template<class AE>
vector_range &assign (const vector_expression<AE> &ae)
>
Назначает векторное выражение на подвектор. Левая и правая стороны задания должны быть независимыми.
<template<class AE>
vector_range &operator += (const vector_expression<AE> &ae)
>
Вычисленный оператор назначения. Добавляет векторное выражение к подвектору.
<template<class AE>
vector_range &plus_assign (const vector_expression<AE> &ae)
>
Добавляет векторное выражение к подвектору. Левая и правая стороны задания должны быть независимыми.
<template<class AE>
vector_range &operator -= (const vector_expression<AE> &ae)
>
Вычисленный оператор назначения. Вычитает векторное выражение из подвектора.
<template<class AE>
vector_range &minus_assign (const vector_expression<AE> &ae)
>
Вычитает векторное выражение из подвектора. Левая и правая стороны задания должны быть независимыми.
<template<class AT>
vector_range &operator *= (const AT &at)
>
Вычисленный оператор назначения. Умножает суб-вектор на скаляр.
<template<class AT>
vector_range &operator /= (const AT &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>.

Simple Projections

Description

Свободные<subrange>функции поддерживают построение векторных диапазонов.

Prototypes


    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);

Generic Projections

Description

Свободные<project>функции поддерживают построение векторных диапазонов. Существующие<matrix_range>могут быть составлены с дальнейшим диапазоном. Полученный диапазон вычисляется с использованием функции<compose>этого существующего диапазона.

Prototypes


    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);

Definition

Определяется в заголовке vector_proxy.hpp.

Type requirements

Complexity

Линейный в зависимости от размера диапазона.

Examples

#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

Description

Класс шаблонов<vector_slice<V>>позволяет адресовать кусочек вектора.

Example

#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;
}

Definition

Определяется в заголовке vector_proxy.hpp.

Template parameters

Parameter Description Default
<V> Тип векторной ссылки.

Model of

Векторная экспрессия.

Если указанный срез выходит за пределы индексного диапазона вектора, то<vector_slice>не является хорошо сформированной векторной экспрессией. То есть доступ к элементу, находящемуся вне индексного диапазона вектора,неопределён.

Type requirements

Нет, кроме тех, которые налагаются требованиямиВекторной экспрессии.

Public base classes

<vector_expression<vector_slice<V> >>

Members

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>
vector_slice &operator = (const vector_expression<AE> &ae)
>
Оператор расширенного назначения.
<template<class AE>
vector_slice &assign (const vector_expression<AE> &ae)
>
Назначает векторное выражение на подвектор. Левая и правая стороны задания должны быть независимыми.
<template<class AE>
vector_slice &operator += (const vector_expression<AE> &ae)
>
Вычисленный оператор назначения. Добавляет векторное выражение к подвектору.
<template<class AE>
vector_slice &plus_assign (const vector_expression<AE> &ae)
>
Добавляет векторное выражение к подвектору. Левая и правая стороны задания должны быть независимыми.
<template<class AE>
vector_slice &operator -= (const vector_expression<AE> &ae)
>
Вычисленный оператор назначения. Вычитает векторное выражение из подвектора.
<template<class AE>
vector_slice &minus_assign (const vector_expression<AE> &ae)
>
Вычитает векторное выражение из подвектора. Левая и правая стороны задания должны быть независимыми.
<template<class AT>
vector_slice &operator *= (const AT &at)
>
Вычисленный оператор назначения. Умножает суб-вектор на скаляр.
<template<class AT>
vector_slice &operator /= (const AT &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>.

Simple Projections

Description

Свободные<subslice>функции поддерживают конструкцию векторных срезов.

Prototypes


    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);

Generic Projections

Description

Свободные<project>функции поддерживают конструкцию векторных срезов. Существующие<vector_slice>могут быть составлены с дальнейшим диапазоном или срезами. Полученный срез вычисляется с использованием функции<compose>этого существующего среза.

Prototypes


    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);

Definition

Определяется в заголовке vector_proxy.hpp.

Type requirements

Complexity

Линейный в зависимости от размера среза.

Examples

#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.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 20:19:19/0.030051946640015/1