Что такое unordered_set в C ++ - PullRequest
       18

Что такое unordered_set в C ++

0 голосов
/ 04 октября 2018

Ниже приведен блок кода из leetcode, мне интересно, что означает вторая строка.Я никогда не видел такой набор инициализации.Может ли кто-нибудь помочь?Спасибо!

 bool containsDuplicate(vector<int>& nums) {
    unordered_set<int> s (nums.begin(), nums.end());
    return s.size()!=nums.size();
 }

1 Ответ

0 голосов
/ 04 октября 2018
unordered_set<int> s (nums.begin(), nums.end());

Инициализирует набор путем итерации по указанному vector, начиная с начала вектора и повторяя до достижения конца, вызывая s.insert(theVal) для каждого int в vector.

return s.size()!=nums.size();

Поскольку unordered_set по своей природе не допускает наличия дублирующих ключей в наборе (т. Е. Пытается вставить ключ в набор, в то время как этот ключ уже является членом набора, не будет изменять набор вообще), тогда мы знаем, что если конечный размер набора меньше размера входного вектора, то во входном векторе должно быть хотя бы одно повторяющееся значение.

...