cpx
cpx

Reputation: 17557

Sorting std::list using std::set

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?

Upvotes: 0

Views: 1085

Answers (2)

Dewfy
Dewfy

Reputation: 23614

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

Upvotes: 0

Stéphane
Stéphane

Reputation: 6905

You should use the std::map, with the data you put in the set as key, and the data you put in the list as value.

This way your list elements will be ordered.

Upvotes: 4

Related Questions