My understanding is that we can't make any assumptions about the order of the elements within unordered... containers (even though they are implemented via hash tables). If that is correct, how can std::unordered_multiset::equal_range() return a range of equal values?
For instance:
typedef std::unordered_multiset<int> int_set;
typedef int_set::iterator int_set_iterator;
int_set set;
set.insert(1);
set.insert(2);
set.insert(1);
set.insert(3);
set.insert(1);
// equal_range seems to assume all 1s are located next to each other
std::pair<int_set_iterator, int_set_iterator> range = set.equal_range(1);
size_t range_size = std::distance(range.first, range.second); // the value is 3
Aucun commentaire:
Enregistrer un commentaire