// setpers.cpp // Применение мультимножества для хранения объектов person #pragma warning (disable:4786) // для множеств (для // компиляторов фирмы Microsoft) #include #include #include using namespace std; class person { private: string lastName; string firstName; long phoneNumber; public: // конструктор по умолчанию person() : lastName("пусто"), firstName("пусто"), phoneNumber(0) { } // конструктор с тремя параметрами person(string lana, string fina, long pho) : lastName(lana), firstName(fina), phoneNumber(pho) { } friend bool operator<(const person&, const person&); friend bool operator==(const person&, const person&); void display() const // вывод данных о людях { cout << endl << lastName << ",\t" << firstName << "\t\tТелефон: " << phoneNumber; } }; // оператор < для класса person bool operator<(const person& p1, const person& p2) { if(p1.lastName == p2.lastName) return (p1.firstName < p2.firstName) ? true : false; return (p1.lastName < p2.lastName) ? true : false; } // оператор == для класса person bool operator==(const person& p1, const person& p2) { return (p1.lastName == p2.lastName && p1.firstName == p2.firstName ) ? true : false; } /////////////////////////////////////////////////////////// int main() { // создание объектов person person pers1("Deauville", "William", 8435150); person pers2("McDonald", "Stacey", 3327563); person pers3("Bartoski", "Peter", 6946473); person pers4("KuangThu", "Bruce", 4157300); person pers5("Wellington", "John", 9207404); person pers6("McDonald", "Amanda", 8435150); person pers7("Fredericks", "Roger", 7049982); person pers8("McDonald", "Stacey", 7764987); // мультимножество класса person multiset< person, less > persSet; // итератор этого мультимножества multiset >::iterator iter; persSet.insert(pers1); // занести объекты person в //мультимножество persSet.insert(pers2); persSet.insert(pers3); persSet.insert(pers4); persSet.insert(pers5); persSet.insert(pers6); persSet.insert(pers7); persSet.insert(pers8); cout << "\nЧисло записей: " << persSet.size(); iter = persSet.begin(); //Вывод содержимого // мультимножества while( iter != persSet.end() ) (*iter++).display(); // получение имени и фамилии string searchLastName, searchFirstName; cout << "\n\nВведите фамилию искомого человека: "; cin >> searchLastName; cout << "Введите имя: "; cin >> searchFirstName; // создание объекта с заданными значениями атрибутов person searchPerson(searchLastName, searchFirstName, 0); // сосчитать количество людей с таким именем int cntPersons = persSet.count(searchPerson); cout << "Число людей с таким именем: " << cntPersons; // вывести все записи, отвечающие запросу iter = persSet.lower_bound(searchPerson); while( iter != persSet.upper_bound(searchPerson) ) (*iter++).display(); cout << endl; return 0; } // end main()