указатель unordered_multiset в C ++ - PullRequest
0 голосов
/ 29 апреля 2018

Iam новичок в C ++, и я хочу использовать функцию вставки указателя unordered multiset ниже, чтобы добавить новый элемент:

struct Customer {
 size_t operator()(const char& c) const;
};

unordered_multiset<char, Customer>* ms

Может ли кто-нибудь помочь?

1 Ответ

0 голосов
/ 29 апреля 2018
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) 

Затем вы можете использовать . вместо ->, чтобы сделать то же самое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...