$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Andrew Lumsdaine (lums_at_[hidden])
Date: 2001-06-11 20:56:52
> > *i ?? // returns a matrix or vector element object.
> > value(i) // return the element value
> > row(i) // returns the row index
> > column(i) // return the column index
> > index(i) // return the index (for vectors)
>
> Yes, I like this.
One thing Jeremy and I had tossed around some time ago while trying to get a
handle on what is a matrix is that a matrix could be viewed as a
doubly-indexed associative container. If this seems like an interesting or
reasonable view of a matrix, then the iterator interface might look
something like std::map, but in this case the value type would be a triple
(key1, key2, value) instead of a pair. The tuple library might have some
bearing on the interface in this case.
So here is a question. Are the following semantically equivalent (is the
difference only syntax)? Is there any reason to choose one over the other?
*i.first
row(*i)
row(i)
*i.second
col(*i)
col(i)
*i.third
val(*i)
val(i)
I think the third option (row(i), col(i), val(i)) makes for the more general
case of a triple, but perhaps it would be too general?
Again, it might be interesting to throw some algorithms around to see if
anything interesting falls out in comparing and contrasting these.