开发者

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开发者_如何学Go insert the element to that index in std::list. is there any other way?


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.


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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜