set setlntegers;
setlntegers.insert (60);
setlntegers.insert (-1);
setlntegers.insert (3000);
cout « "Writing the contents of the set to the screen" « endl;
DisplayContents (setlntegers);
25:
msetlntegers.insert (setlntegers.begin (), setlntegers.end ());
msetlntegers.insert (3000);
28:
|
cout « "Writing the contents of the multiset to the screen"
|
29:
|
endl;
DisplayContents (msetlntegers);
cout « "Number of instances of '3000' in the multiset are: '";
cout « msetlntegers.count (3000) « "'" « endl;
34:
return 0;
}
448 ЗАНЯТИЕ 19. Классы наборов библиотеки STL
Результат
Writing the contents of the set to the screen
-1 60 3000
Writing the contents of the multiset to the screen
-1 60 3000 3000
Number of instances of '3000' in the multiset are: '2'
Анализ
Строки 4 -13 содержат обобщенный шаблон функции D is p la y C o n te n ts (), который вы уже видели на занятиях 17 и 18, предназначенной для вывода содержимого контей нера STL на консоль или экран. Строки 17 и 18, как вы уже знаете, определяют объекты классов s e t и m u l t i s e t . Строки 20 -22 вставляют значения в набор, используя функцию-член i n s e r t (). Строка 26 демонстрирует применение функции i n s e r t () для вставки содержимого набора в мультимножество (в данном случае содержимого набора s e t l n t - e g e r s в мультимножество m s e tI n te g e r s ) . В строке 27 к мультимножеству добавляется элемент со значением 3000, которое уже сущ ествует в нем. Вывод демонстрирует, что мультимножество в состоянии содержать несколько одинаковых значений. Строки 32 и
демонстрируют удобство функции-члена m u l t i s e t : : c o u n t (), возвращающей коли чество элементов в мультимножестве, содержащем указанное значение.
СОВЕТ Для поиска в мультимножестве количества элементов с одинаковым значением, переданным как аргумент, используйте функцию multiset:: count ().
Возникла ошибка компиляции при использовании ключевого слова auto?
Функция DisplayContents () в листинге 19.2 использует ключевое слово C++11 auto для определения типа итератора в строке 7. Кроме того, она ис пользует возвращающие итератор const_iterator функции cbeginO и cend (), которые совместимы только со стандартом С++11.
этом и последующих примерах для компиляции с использованием компиля тора, не совместимого со стандартом С++11, необходимо заменить ключевое слово auto явным типом.
Так, функцию DisplayContents () для устаревшего компилятора следует из менить следующим образом:
Do'stlaringiz bilan baham: |