What is the difference between set and hashset in C++ STL?

前端 未结 5 754
时光说笑
时光说笑 2021-02-02 09:31

When should I choose one over the other? Are there any pointers that you would recommend for using the right STL containers?

5条回答
  •  旧时难觅i
    2021-02-02 09:55

    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.

提交回复
热议问题