I would like to know if we can sort a pre created set. When I first create the set s_p2, I sort using a different element point.getLength(). but after user input i would like to sort the items according to the x value point.getX(). How i do this ?
It seems like set container does not have a sort function. And i am advised to use vector. But sets are able to store unique elements only.
Q1: How can i sort a set depending on the criteria
Q2: If set is unable to do this than which STL container is the best choice and how can i sort the elements in the container.
You cannot resort a set
, how it sorts is part of the type of the particular set
. A given set
has a fixed set order that cannot be changed.
You could create a new set
with the same data relatively easily. Just create a new set
that sorts based on the new criteria.
If you want to use the two set
s in the same code, you'll have to abstract the access to the underlying set
.
Now, if you are doing rare reads and modifications, using a vector
that you sort manually is often a better idea. You can remove duplicates by using the std::unique
-erase
idiom.
std::set
stores its members in a sorted fashion. If you walk through the set from .begin()
to .end()
, you will have a sorted list of items.
If you don't like the default sort criteria, you may supply a 2nd template parameter to std::set<>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With