Итерация по std::unordered_multiset

239
28 ноября 2017, 22:49

При итерации std::unordered_multiset порядок элементов не определен (гаранитруется только, что элементы с одним хешем будут идти подряд без перерыва, так как такие элементы находятся в одной 'bucket'). А есть ли способ поменять местами две 'buckets'? В документации методов std::unordered_multiset нет метода, подобного методу splice контейнера std::list, нет и метода, который возвращал бы итератор на 'bucket' (как единое целое) с выбранным значением хеша.

Answer 1

Про менять местами: Нет. Такой возможность нет исходя из идеологии hash контейнеров.

Про итерацию по bucket:

std::unordered_multiset<T> ms;
size_t N = ms.bucket(T(...));
auto it = ms.begin(N);
for (; it != ms.end(N); ++it) 
{
    ...
}
  • std::unordered_multiset
  • ms.bucket
  • ms.begin(N)
READ ALSO
Работа с вектором классов C++

Работа с вектором классов C++

Дано: два вектора классов

221
Как получить адрес kernel32.dll

Как получить адрес kernel32.dll

Как получить адрес kernel32dll не используя функции WinAPI?

218
has triggered a breakpoint

has triggered a breakpoint

При выполнении выдаёт ошибку

239