Boost logo

Boost :

From: Jeremy Siek (jsiek_at_[hidden])
Date: 2001-03-23 18:38:24


On Fri, 23 Mar 2001, David Abrahams wrote:
abraha>
abraha> > Yet, even if the index convention problem is fixed, we still need
abraha> > to solve the row-major/column-major problem ...
abraha>
abraha> What problem is that? I thought row-major/column-major was just a
abraha> distinction describing underlying storage format, and thus an implementation
abraha> detail.

Providing both row and column major storage is not that difficult...
both MTL and Blitz++ provide this option.

abraha> > To detour a little, I think it is very unfortunate that std::vector
abraha> > is called a *vector*. Vectors are one dimensional arrays that
abraha> > support the operations required by the definition of a vector space.
abraha> > Matrices are conceptually retangular arrays that support at least
abraha> > several matrix operations. std::vector hardly be called a vector.
abraha> > The name "array list" used by the Java folks, although weird, is
abraha> > more accurate, but I think the best name to std::vector is simply
abraha> > std::array ...
abraha> >
abraha> > I hope the Boost folks can draw a line between vectors, matrices
abraha> > and arrays in their matrix & array library.
abraha>
abraha> What sort of line did you have in mind?

I agree that there should be a line drawn between various groups of
concepts, and the following line is what we were planning on using
for MTL v3.0.

There will be a group of concepts that deal with linear algerba
concepts: such as Vector Space and Hilbert Space. These concepts
have already been spelled out in much detail by mathematicians, and
we merely have to translate them to C++.

Another group of concepts will deal with manipulating array and
matrix data structures. These concepts will include things like
iterators, element indexing, subarray/submatrix indexing.
These concepts will have a similar flavor to the STL container
concepts.
 
And yes, I agree that std::vector was a horrible name for an
array class. For example, you can't multiply a std::vector by
a scalar... which would be one of the primary requirements of
a Vector Space.

Cheers,
Jeremy

----------------------------------------------------------------------
 Jeremy Siek www: http://www.lsc.nd.edu/~jsiek/
 Ph.D. Candidate email: jsiek_at_[hidden]
 Univ. of Notre Dame work phone: (219) 631-3906
----------------------------------------------------------------------


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk