Boost logo

Ublas :

Subject: Re: [ublas] vector_view over (T*,size) (Cem Bassoy)
From: Cem Bassoy (cem.bassoy_at_[hidden])
Date: 2019-01-23 16:42:00


Am Mi., 23. Jan. 2019 um 16:34 Uhr schrieb dariomt--- via ublas <
ublas_at_[hidden]>:

> Hello,
>
> Thanks but I already know about vector proxies, and I don't think covers
> my needs.
>

True because all proxies constructors require container types.

>
> Let me rephrase the question, given the function add, that takes a vector
> and a span (pointer + size)
>
> ublas::vector<double> add(const ublas::vector<double>& v, const double* p,
> size_t s)
> {
> assert(v.size() == s);
> return v + vector_view<double>(p, s);
> }
>

> Is there something like vector_view already in Ublas that
> 1) does not copy the data pointed by p
>

No. It should be in the proxy (view) class template.

> 2) integrates in the ublas expression template machinery as a vector-like
> expression
>

See (1)

>
> If there is not one already implemented, is it possible to implement one?
> Is it enough if I model the "Vector Expression" Concept as described in
> https://www.boost.org/doc/libs/1_69_0/libs/numeric/ublas/doc/expression_concept.html#2VectorExpression
> ? Do I also need to inherit from vector_expression?
>

You could locally extend vector_range by a constructor.
You could implement a vector_view similar to vector_range. Then yes you
need to inherit from vector_expression.

>
> Thanks!
>

> From: Cem Bassoy <cem.bassoy_at_[hidden]>
>> To: ublas mailing list <ublas_at_[hidden]>
>> Cc:
>> Bcc:
>> Date: Wed, 23 Jan 2019 10:18:22 +0100
>> Subject: Re: [ublas] [Ublas] vector_view over (T*,size)
>> Hi there,
>>
>> yes, it is possible to do something like this. Please have a look at Vector
>> Proxies.
>> <https://www.boost.org/doc/libs/1_69_0/libs/numeric/ublas/doc/vector_proxy.html>
>>
>>
>> Am Mo., 21. Jan. 2019 um 11:28 Uhr schrieb dariomt--- via ublas <
>> ublas_at_[hidden]>:
>>
>>> Hi list,
>>>
>>> Say I have a (GSL-like) span (which is basically a pointer and a length).
>>>
>>> Is it possible to build a vector-like view over that span, so that the
>>> result is usable within the ublas expression template machinery? Some kind
>>> of ublas::vector_view(T*, size)?
>>>
>>> The objective is to avoid having to copy all that data into a
>>> ublas::vector just to interoperate with other ublas code.
>>>
>>> Thanks in advance!
>>>
>> _______________________________________________
> ublas mailing list
> ublas_at_[hidden]
> https://lists.boost.org/mailman/listinfo.cgi/ublas
> Sent to: cem.bassoy_at_[hidden]
>