Re: Proper way to put an abstract base class into a container

From: David Hilsee (davidhilseenews_at_yahoo.com)
Date: 08/11/04


Date: Tue, 10 Aug 2004 23:56:47 -0400


"Aguilar, James" <jfa1@cec.NOBOTSwustl.edu> wrote in message
news:cfc1e1$om1$1@newsreader.wustl.edu...
>
> "David Hilsee" <davidhilseenews@yahoo.com> wrote in message
> news:jPKdncoEMqCE5YTcRVn-tA@comcast.com...
> >
> > When people say that they have a class that represents a matrix, they
are
> > usually writing a class that will perform number-crunching (matrix
> > multiplications, inverses, transposes, etc).
>
> This is not a mathematical matrix, it is a matrix in the sense of a two
> dimensional array (i.e. rows and columns, hence, matrix).
>
> > Also, they usually will use it
> > to hold objects of type double or float (or possibly a light wrapper
> around
> > those types), and not instances of an ABC. An ABC might be an
interesting
> > exercise, but for any application that made intensive use of the matrix,
> the
> > performance would probably be unacceptable.
>
> I wouldn't say that. It's just a one dimensional array of "<typename
T>"s.
> It is accessed through T operator ()(int, int) which just does array
> arithmetic: return store_[rows * x + y]. Everything is inline, so it's
> really no overhead at all, besides actually filling the matrix.

In this case, I wouldn't worry about performance. I mentioned performance
because I thought that you might be doing some number crunching with the
"matrix" class, which you clearly aren't.

> > Why do you want to store an ABC
> > inside a matrix?
>
> I'm doing a toy project which makes a 80x20 matrix of containers, then
puts
> particles in them (based on a text file). After that, it will iterate
> through the matrix and randomly move each particle. The point is to
> demonstrate that a gas, even if concentrated in one place initially, will
> eventually diffuse into a larger area. This will be tried with all kinds
of
> shapes of containers to see how well the concept works and what kinds of
> shapes keep gasses in the longest. Since a text file will dictate the
shape
> of the container, it should be no problem to reuse the programs on
different
> kinds of containers. Of course, the base class that I want to put into
the
> matrix is the bottom type (that is "Floor" or "Wall" at this point) which
> will itself have a reference to a list of the particles on top of it.
>
> > As Victor pointed out, pointers are an option. They're
> > not all that easy to handle, though, if you want to write
memory-leak-free
> > code.
>
> That's one option. I'm not worried about memory leaks, since the program
is
> so small. I know exactly where everything is and in what order it
happens.
> Pointers . . . meh. I guess I will have to use one sometime, so it might
as
> well be now. I think I'll do that. Actually, I think I can still
abstract
> it and make it return references to the typename by making pointers
> internally but dereferencing them outside. Well, I'll let y'all know how
it
> goes.

I'm not a big physics or chemistry guy, but I would be interested in seeing
what the end result looks like.

-- 
David Hilsee


Relevant Pages

  • Re: Proper way to put an abstract base class into a container
    ... I'm doing a toy project which makes a 80x20 matrix of containers, ... shapes keep gasses in the longest. ... will itself have a reference to a list of the particles on top of it. ... it and make it return references to the typename by making pointers ...
    (comp.lang.cpp)
  • Re: Public data members = bad programming etc.
    ... IMHO it IS dangerous to keep references, iterators or pointers into ... containers return reference like things rather ... is this considered bad programming? ...
    (comp.lang.cpp)
  • Re: INVALID_OPERATION with COLOR_INDEX texture
    ... have to allocate what the pointers point to. ... dynamically allocate STL containers themselves. ... asymptotic order to take longer than those with a "worse" ...
    (comp.graphics.api.opengl)
  • Re: Swapping Bullshit
    ... >> water from the containers. ... >> litres of water into a 3 litre container. ... OTOH, if you're using pointers, there's nothing preventing you from ... Dan Pop ...
    (comp.lang.cpp)
  • Re: Swapping Bullshit
    ... >> water from the containers. ... >> litres of water into a 3 litre container. ... OTOH, if you're using pointers, there's nothing preventing you from ... Dan Pop ...
    (comp.lang.c)