unordered_set vs set
Which to use?
Here's a simple test that checks the speed of inserts for various sizes of integer data. The code generates a list of random intergers (with likely some repeats, and then inserts them one at a time to either a std::set or std::unordered_set. I use set::count() because in my application code I check if an index is present, and if it is, then it gets inserted and other actions happen.
The moral of the story is that unless you have a very small data size, this sort of access pattern favors the unordered_set.