Курс ООП в С презентация. ООП в с++(полный курс). Объекты и классы
Скачать 1.76 Mb.
|
Контейнерные классы//предикат для поиска по условию "возраст < заданного возраста" template { public: bool operator()(t& x) { if(x }; //предикат для поиска по условию "возраст == заданному возрасту" template { public: bool operator()(t& x) { if(x==year)return true; else return false; } }; … Контейнерные классыvector temp; sort(temp.begin(),temp.end(),Comp2()); //сортировка по убыванию //найти все людей, у которых возраст меньше 18 //итератор tv1 поставили на начало вектора vector ::iterator tv1=temp.begin(); //итератор tv2 поставили на конец вектора vector ::iterator tv2=temp.end(); //поиск значения, соответствующего предикату pp1 pred1 pp1; cout<<"Persons which have age<18:\n"; if((tv1=find_if(temp.begin(),tv2,pp1))!=temp.end()) { cout<<*tv1; } else { cout<<"\nThere is no such object\n"; } cout<<"\n"; Контейнерные классы//отсортировать контейнер по возрстанию sort(temp.begin(),temp.end(),Comp1()); //найти количество человек, у которых возраст равен 18 //поиск значения, соответствующего предикату pp2 pred2 pp2; //итератор поставили на начало вектора tv1=temp.begin(); //итератор поставили на конец вектора tv2=temp.end(); cout<<"Persons which have age=18:\n"; int count=count_if(tv1,tv2,pp2); cout<<"Count="< Контейнерные классыАссоциативные контейнеры В ассоциативных контейнерах элементы не выстроены в линейную последовательность. Они организованы в более сложные структуры (деревья), что дает большой выигрыш в скорости поиска. Поиск значений производится с помощью ключей как числового или строкового типа, так и представленных в виде объектов или указателей на них. Рассмотрим две основные категории ассоциативных контейнеров в STL: множества и словари. В множестве (set) хранятся объекты, упорядоченные по некоторому ключу, являющемуся атрибутом самого объекта. Например, множество может хранить объекты класса Person, упорядоченные в алфавитном порядке по значению ключевого поля name. Если в множестве хранятся значения одного из встроенных типов, например int, то ключом является сам элемент. Шаблон множества имеет два параметра: тип ключа и тип функционального объекта, определяющего отношение "меньше". Если объявить некоторое множество set Для использования контейнеров типа set необходимо подключить заголовочный файл Контейнерные классыИмеется три способа определить объект типа set:
int а[5] = {1, 2, 3, 4, 5}; set set Для вставки элементов в множество можно использовать метод insert(), для удаления – метод erase(). Также к множествам применимы общие для всех контейнеров методы. Во всех ассоциативных контейнерах есть метод count(), возвращающий количество объектов с заданным ключом. Так как и в множествах, и в словарях все ключи уникальны, то метод count() возвращает либо 0, если элемент не обнаружен, либо 1. Для множеств библиотека содержит некоторые специальные алгоритмы, в частности, реализующие традиционные теоретико-множественные операции: includes выполняет проверку включения одной последовательности в другую, результат равен true в том случае, когда каждый элемент последовательности [first2,last2) содержится в последовательности [firstl, lastl). set_intersection создает отсортированное пересечение множеств, то есть множество, содержащее только те элементы, которые одновременно входят и в первое, и во второе множество. set_union создает отсортированное объединение множеств, то есть множество, содержащее элементы первого и второго множества без повторяющихся элементов |