void populate_multiset(const string& s, unordered_multiset<char, CustomHasher>* ms)
Если эта функция принимает string
, а ваш unordered_multiset
принимает char
, вы можете вставить только char
for(size_t i = 0; i<s.size(); i++) {
ms->insert(s[i]); // insert each individual char
}
Или используйте итераторы для вставки диапазона char
ms->insert(s.begin(), s.end());
Кроме того, поскольку стандартная библиотека уже предоставляет способ хеширования char
. Вы можете просто объявить
unordered_multiset<char> ms;
Однако, если вы хотите предоставить пользовательскую хеш-функцию, вы можете. И синтаксис точно такой же, как у вас в вопросе.
И гораздо более распространенный способ передачи контейнера в функцию - через ссылку. например,
void populate_multiset(const string& s, unordered_multiset<char, CustomHasher>& ms)
Затем вы можете использовать .
вместо ->
, чтобы сделать то же самое.