Actually, using the STL to implement a circular list would be pretty easy. You'd just create an iterator adaptor for a regular list::iterator. It would probably be easiest to have it tied to a specific list (theList), and change the increment operator so that, when the iterator equals theList.end(), it becomes equal to theList.begin() instead. The decrement operator would be similar. (Of course, I'm probably missing some basic reason why this wouldn't work, so correct me if you see I'm wrong).
As for a multi-list, do you mean a list where each element has several fields, and you can iterate through the list different ways based on which field you're looking at? e.g. to keep a group of people simultaneously sorted by age, weight, and height in the same "multi-list"?