
Peter Dimov wrote:
Rob Stewart wrote:
[...] std::vector + std::sort + std::binary_search?
(You'd populate the vector with your data, run std::sort on it, and then just use std::binary_search from that point forward.)
Other search algorithms which might prove more efficient for your data type, of course.
FWIW, if you decide to go with the above, be sure to profile it against a std::map first. You may be surprised. Not to mention hash_map, if you have one.
I'm not so sure speed is the issue vs. size. Your typical std::map<> implementation will take about 3 pointers + int + sizeof(data) per node, whereas std::vector<> typically only has whole-container overhead. Unless your nodes are extremely large, that's not an insignificant amount of space overhead if you are only going to insert once. Dave