I'm adding two different elements to both std::list and std::set and I want the std::list to be sorted with the same order as of std::set. one way I tried is when the element is added to std::set, find that element then get the index of that element using std::distance(begin, found) and then insert the element to that index in std::list. is there any other way?
A:
It is too complicated a way! In fact std::set implemented as binary tree, and uses std::less for sorting (by default). Also this provides "stable" iterator, it is mean that iterator returned by std::set::insert will be valid until element explicitly erased. So you can put just inserted iterator to std::list. And wise verse - std::list has also stable iterator, so you can put items to list but place iterators to set. In last way just override std::less
Dewfy
2010-01-22 10:16:34