Re: Trying to use the list::sort routine.
Bruce Chastain wrote:
[std::list::sort() with predicate missing]
So I need to ask, are all versions of MS VC affected by this "bug"?
No.
In other words is there a version of MS VC I could upgrade to as to
no longer need to edit the STL headers?
The compiler you are dealing with is almost ten years old, the
standardlibrary even older, as the statements in Igor's link say. Switching
to any more recent development environment or replacing just the
standardlibrary will work, both the 'old' VC7.1 and the new VC8 are much
better in that aspect.
In the program I'm trying to add functionality to, there is already a list
of elements constructed,. and I just need to resort it using several
different sort criteria. Is my only option to extract the list items to a
non-STL array, sort them myself, and then reconstruct the list again? Can
you think of an STL way of accomplishing what I need?
struct my_sorting_predicate { ... };
std::list<element> foo;
// poor man's sort.
std::set<element, my_sorting_predicate> bar( foo.begin(), foo.end());
This of course assumes free copyability (which is technically required for
std::list, but not necessarily performant/desirable). Alternatively, you
could switch to storing pointers instead of objects themselves or something
like that. Also, you could use std::sort on a vector/deque, though I'm not
sure they are available.
Uli