fixed_array in storage.hpp

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

fixed_array in storage.hpp

Joaquim Duran Comas
I would like to create a fixed_array in strorage.hpp file. Is there any inconvenient?

Joaquim Duran


_______________________________________________
ublas mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/ublas
Sent to: [hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: fixed_array in storage.hpp

David Bellot
no I don't think so. Go ahead

On Thu, Jan 22, 2015 at 1:04 AM, Joaquim Duran Comas <[hidden email]> wrote:
I would like to create a fixed_array in strorage.hpp file. Is there any inconvenient?

Joaquim Duran


_______________________________________________
ublas mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/ublas
Sent to: [hidden email]


_______________________________________________
ublas mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/ublas
Sent to: [hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: fixed_array in storage.hpp

Nasos Iliopoulos
In reply to this post by Joaquim Duran Comas
Why do you want to do that? Can't you use std::array?

On 01/21/2015 08:04 PM, Joaquim Duran Comas wrote:
I would like to create a fixed_array in strorage.hpp file. Is there any inconvenient?

Joaquim Duran



_______________________________________________
ublas mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/ublas
Sent to: [hidden email]


_______________________________________________
ublas mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/ublas
Sent to: [hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: fixed_array in storage.hpp

Joaquim Duran Comas
I see. I can use std:array.


2015-01-22 15:03 GMT+01:00 Nasos Iliopoulos <[hidden email]>:
Why do you want to do that? Can't you use std::array?

On 01/21/2015 08:04 PM, Joaquim Duran Comas wrote:
I would like to create a fixed_array in strorage.hpp file. Is there any inconvenient?

Joaquim Duran



_______________________________________________
ublas mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/ublas
Sent to: [hidden email]


_______________________________________________
ublas mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/ublas
Sent to: [hidden email]


_______________________________________________
ublas mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/ublas
Sent to: [hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: fixed_array in storage.hpp

Nasos Iliopoulos
Thinking it over  there may be a reason to implement a fixed_array class and that is to remove the default (zero for numeric types) initialization of the std::array. This would speed up code like:

(using ublas::fixed_vector here:)

fixed_vector<double,3 > v; // Right now this will initialize to 3 zeros which is redundant.

for ( auto i = 0 ; i != 3; i++)
{
   v[i] = i;
}

For small arrays though this there is a safe and much better alternative:

fixed_vector<double,3> v( {0, 1, 2} ) ;

and hence I am not sure if it would be wise to implement a non-initialization fixed_array class.

Another option I was thinking was to implement some sort of "lambda initialization" i.e. a user provided function that is used in the constructor. The problem with this is that it may provide opportunities to break encapsulation and that would be terrible in the construction phase. I am not ruling out such a feature though.

-Nasos

On 01/22/2015 05:59 PM, Joaquim Duran Comas wrote:
I see. I can use std:array.


2015-01-22 15:03 GMT+01:00 Nasos Iliopoulos <[hidden email]>:
Why do you want to do that? Can't you use std::array?

On 01/21/2015 08:04 PM, Joaquim Duran Comas wrote:
I would like to create a fixed_array in strorage.hpp file. Is there any inconvenient?

Joaquim Duran



_______________________________________________
ublas mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/ublas
Sent to: [hidden email]


_______________________________________________
ublas mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/ublas
Sent to: [hidden email]



_______________________________________________
ublas mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/ublas
Sent to: [hidden email]


_______________________________________________
ublas mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/ublas
Sent to: [hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: fixed_array in storage.hpp

Joaquim Duran Comas
Std::array hasn't any constructor defined in C++11, so the initialization is done as:

std::array<int, 4> v = { { 1, 2, 3, 4} };

C++14 only defines the list constructor to std::array (as you've wrote: fixed_vector<double,3> v( {0, 1, 2} ) ;).



Respecting to the "lambda initialiation", I see it as a way to initialize an array (or a vector, in general) following series like:

i^k: 0, 1, 4, 9, ....
k*i: 0, 2, 4, 6, 8,....
k: 5, 5, 5, 5,....
('k' is a constant value and 'i', the index of the elements of the array)

Joaquim Duran


2015-01-23 2:10 GMT+01:00 Nasos Iliopoulos <[hidden email]>:
Thinking it over  there may be a reason to implement a fixed_array class and that is to remove the default (zero for numeric types) initialization of the std::array. This would speed up code like:

(using ublas::fixed_vector here:)

fixed_vector<double,3 > v; // Right now this will initialize to 3 zeros which is redundant.

for ( auto i = 0 ; i != 3; i++)
{
   v[i] = i;
}

For small arrays though this there is a safe and much better alternative:

fixed_vector<double,3> v( {0, 1, 2} ) ;

and hence I am not sure if it would be wise to implement a non-initialization fixed_array class.

Another option I was thinking was to implement some sort of "lambda initialization" i.e. a user provided function that is used in the constructor. The problem with this is that it may provide opportunities to break encapsulation and that would be terrible in the construction phase. I am not ruling out such a feature though.

-Nasos

On 01/22/2015 05:59 PM, Joaquim Duran Comas wrote:
I see. I can use std:array.


2015-01-22 15:03 GMT+01:00 Nasos Iliopoulos <[hidden email]>:
Why do you want to do that? Can't you use std::array?

On 01/21/2015 08:04 PM, Joaquim Duran Comas wrote:
I would like to create a fixed_array in strorage.hpp file. Is there any inconvenient?

Joaquim Duran



_______________________________________________
ublas mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/ublas
Sent to: [hidden email]


_______________________________________________
ublas mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/ublas
Sent to: [hidden email]



_______________________________________________ ublas mailing list [hidden email] http://lists.boost.org/mailman/listinfo.cgi/ublas
Sent to: [hidden email]


_______________________________________________
ublas mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/ublas
Sent to: [hidden email]


_______________________________________________
ublas mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/ublas
Sent to: [hidden email]