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.
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<>
You can have two sets and keep them in sync or copy one to the other.
program returns: ByA 1,8 2,7 3,6
ByB: 3,6 2,7 1,8
You cannot resort a
set
, how it sorts is part of the type of the particularset
. A givenset
has a fixed set order that cannot be changed.You could create a new
set
with the same data relatively easily. Just create a newset
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 underlyingset
.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 thestd::unique
-erase
idiom.