managing objects in std::list

From: Glen Able (Glen.Able_at_gmail.com)
Date: 02/15/05


Date: Tue, 15 Feb 2005 09:30:38 -0000

Hi,

I have a collection of lists, something like this:

std::list<Obj*> lists[10];

Now I add an Obj to one of the lists:

Obj* gary;
lists[3].push_front(gary);

Then later on, the Obj wants to remove itself from whichever list it was put
in (it's only allowed to be in one list). What's the best way to do this
efficiently?

My best idea is: when adding an Obj to a list, the Obj has to store the
address of the list, and also an iterator to the current start of the list
(i.e. where it's just been added). Later it can use these to remove itself.

Anyone have anything smarter than this?

ta,
G.A.