![]() Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Листинг 19.10. Класс-контейнер map
1: #include < iostream> 2: #include < string> 3: #include < map> 4: using namespace std; 5: 6: class Student 7: { 8: public: 9: Student(); 10: Student(const string& name, const int age); 11: Student(const Student& rhs); 12: ~Student(); 13: 14: void SetName(const string& namе); 15: string GetName() const; 16: void SetAge(const int age); 17: int GetAge() const; 18: 19: Student& operator=(const Student& rhs); 20: 21: private: 22: string itsName; 23: int itsAge; 24: }; 25: 26: Student:: Student() 27:: itsName(" New Student"), itsAge(16) 28: { } 29: 30: Student:: Student(const string& name, const int 31:: itsName(name), itsAge(age) 32: { } 33: 34: Student:: Student(const Student& rhs) 35:: itsName(rhs.GetName()), itsAge(rhs.GetAge()) 36: { } 37: 38: Student:: ~Student() 39: { } 40: 41: void Student:: SetName(const string& name) 42: { 43: itsName = name; 44: } 45: 46: string Student:: GetName() const 47: { 48: return itsName; 49: } 50: 51: void Student:: SetAge(const int age) 52: { 53: itsAge = age; 54: } 55: 56: int Student:: GetAge() const 57: { 58: return itsAge; 59: } 60: 61: Student& Student:: operator=(const Student& rhs) Забиваем Сайты В ТОП КУВАЛДОЙ - Уникальные возможности от SeoHammer
Каждая ссылка анализируется по трем пакетам оценки: SEO, Трафик и SMM.
SeoHammer делает продвижение сайта прозрачным и простым занятием.
Ссылки, вечные ссылки, статьи, упоминания, пресс-релизы - используйте по максимуму потенциал SeoHammer для продвижения вашего сайта.
Что умеет делать SeoHammer
— Продвижение в один клик, интеллектуальный подбор запросов, покупка самых лучших ссылок с высокой степенью качества у лучших бирж ссылок. — Регулярная проверка качества ссылок по более чем 100 показателям и ежедневный пересчет показателей качества проекта. — Все известные форматы ссылок: арендные ссылки, вечные ссылки, публикации (упоминания, мнения, отзывы, статьи, пресс-релизы). — SeoHammer покажет, где рост или падение, а также запросы, на которые нужно обратить внимание. SeoHammer еще предоставляет технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Зарегистрироваться и Начать продвижение 62: { 63: itsName = rhs, GetName(); 64: itsAge = rhs.GetAge(); 65: return *this; 66: } 67: 68: ostream& operator< < (ostream& os, const Student& rhs) 69: { 70: os < < rhs.GetName() < < " is " < < rhs.GetAge() < < " years old"; 71: return os; 72: } 73: 74: template< class T, class A> 75: void ShowMap(const map< T, A> & v); // отображает свойства карты 76: 77: typedef map< string, Student> SchoolClass; 78: 79: int main() 80: { 81: Student Harry(" Harry", 18); 82: Student Sally(" Sally", 15); 83: Student Bill(" Bill", 17); 84: Student Peter(" Peter", 16); 85: 86: SchoolClassMathClass; 87: MathClass[Harry.GetName() ] = Harry; 88: MathClass[Sally.GetName()] = Sally; 89: MathClass[Bill.GetName() ] = Bill; 90: MathClass[Peter.GetName()] = Peter; 91: 92: cout < < " MathClass; \n"; 93: ShowMap(MathClass); 94: 95: cout < < " We know that " < < MathClass[" Bill" ].GetName() 96: < < " is " < < MathClass[" Bill" ].GetAge() < < " years old\n"; 97: 98: return 0; 99: } 100: 101: // 102: // Отображает свойства карты 103: // 104: template< class T, class A> 105: void ShowMap(const map< T, А> & v) 106: { 107: for (map< T, A>:: const_iterator ci = v.begin(); 108: ci! = v.end(); ++ci) 109: cout < < ci-> first < < ": " < < ci-> second < < " \n"; Сервис онлайн-записи на собственном Telegram-боте
Попробуйте сервис онлайн-записи VisitTime на основе вашего собственного Telegram-бота:— Разгрузит мастера, специалиста или компанию; — Позволит гибко управлять расписанием и загрузкой; — Разошлет оповещения о новых услугах или акциях; — Позволит принять оплату на карту/кошелек/счет; — Позволит записываться на групповые и персональные посещения; — Поможет получить от клиента отзывы о визите к вам; — Включает в себя сервис чаевых. Для новых пользователей первый месяц бесплатно. Зарегистрироваться в сервисе 110: 111: cout < < endl; 112: }
Результат: MathClass: Bill: Bill is 17 years old Harry: Harry is 18 years old Peter: Peter is 16 years old Saily: Sally is 15 years old We know that Bill is 17 years old
Анализ: В строке 3 в программу добавляется файл заголовка < map>, поскольку будет использоваться стандартный класс-контейнер map. Для отображения элементов карты определяется шаблонная функция ShowMap. В строке 77 класс SchoolClass определяется как карта элементов, каждый из которых состоит из пары (ключ, значение). Первая составляющая пары — это значение ключа. В нашем классе SchoolClass имена студентов используются в качестве ключевых значений, которые имеют тип string. Ключевое значение элемента в контейнере карты должно быть уникальным, т.е. никакие два элемента не могут иметь одно и то же ключевое значение. Вторая составляющая пары — фактический объект, в данном примере это объект класса Student. Парный тип данных реализован в библиотеке STL как структура (тип данных struct), состоящая из двух членов, а именно: first и second. Эти члены можно использовать для получения доступа к ключу и значению узла. Пропустим пока функцию main() и рассмотрим функцию StwtMap, которая открывает доступ к объектам карты с помощью константного итератора. Выражение ci-> first (строка 109) указывает на ключ (имя студента), а выражение ci-> second — на объект класса Student. В строках 81-84 создаются четыре объекта класса Student. Класс MathClass определяется как экземпляр класса SchoolClass (строка 86), а в строках 87-90 уже имеющиеся четыре студента добавляются в класс MathClass: map_object[key_value] = object_value; Для добавления в карту пары ключ—значение можно было бы также использовать функции push_back() или insert() (за более подробной информацией обратитесь к документации, прилагаемой к вашему компилятору). После добавления к карте всех объектов класса Student можно обращаться к любому из них, используя их ключевые значения. В строках 95 и 96 для считывания записи, относящейся к студенту Биллу (объекту Bill), используется выражение MathClass[" Bill" ].
|