When should I choose one over the other? Are there any pointers that you would recommend for using the right STL containers?
A Set is a generic set of values with no duplicate elements. A TreeSet is a set where the elements are sorted. A HashSet is a set where the elements are not sorted or ordered.
Sets are the containers in C++ STL for storing elements in a given order. The elements of a set must be unique.
hash_set is an extension that is not part of the C++ standard. Lookups should be O(1) rather than O(log n) for set , so it will be faster in most circumstances. Another difference will be seen when you iterate through the containers.
unordered_set time was better than set (15494846) : 93<155. Only with adding this line: s.
hash_set
is an extension that is not part of the C++ standard. Lookups should be O(1) rather than O(log n) for set
, so it will be faster in most circumstances.
Another difference will be seen when you iterate through the containers. set
will deliver the contents in sorted order, while hash_set
will be essentially random (Thanks Lou Franco).
Edit: The C++11 update to the C++ standard introduced unordered_set
which should be preferred instead of hash_set
. The performance will be similar and is guaranteed by the standard. The "unordered" in the name stresses that iterating it will produce results in no particular order.
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