Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Відображення та мультивідображенняСодержание книги
Поиск на нашем сайте
У відображенні завжди зберігаються пари значень, одне з яких являє собою ключовий об’єкт, інше – об’єкт, що містить значення. Ключовий об’єкт містить ключ, по якому шукається значення. Об’єкт-значення містить деякі дані, які звичайно і цікавлять користувача, що шукає щось за допомогою ключа. Значеннями часто є також рядки, числи чи інші об’єкти включно з контейнерами. Наприклад, ключем може бути слово, а значенням – кількість його входження в текст (частотна таблиця) або список номерів сторінок книжки, де це слово зустрічається. Одним з найпопулярніших прикладів використання відображень є асоціативні масиви. В звичайних масивах індекс завжди є цілим числом. З його допомогою здійснюється доступ до конкретних елементів. Так, у виразі anArray[3] число 3 є індексом. З асоціативними масивами справа дещо інша, там тип даних індексу можна задати самостійно. При цьому з’являється унікальна можливість написати, наприклад, такий вираз: anArray[?jane?]
Асоціативний масив Розглянемо невеликий приклад відображення, використовуваного в якості асоціативного масиву. Ключами будуть назви штатів, а значеннями – їх населення. //демонстрація відображення #include<iostream> #include<conio> #include<string> #include<map> using namespace std; int main() {string name; int pop; string states[]={"Colorado","Newada","Ohio", "Montana","Arizona","Texas"}; int pops[]={470,2890,800,707,2710,944}; map<string, int, less<string> >mapStates;//відображення map<string, int, less<string> >::iterator iter; //ітератор for (int j=0;j<6;j++) {name=states[j]; //одержання даних з масивів pop=pops[j]; mapStates[name]=pop; //занесення їх у відображення } cout<<"Vvedit nazvu statu: "; cin>>name; pop=mapStates[name]; cout<<"Naselenna: "<<pop<<"000\n"; cout<<endl; for(iter=mapStates.begin();iter!=mapStates.end();iter++) cout<<(*iter).first<<" "<<(*iter).second<<"000\n"; getch(); return 0; }
Програма 15.30 При запуску програми у користувача запитується назва штату. Одержане значення використовується в якості ключа для пошуку у відображенні значення населення і виведення його на екран. Після цього виводиться весь вміст відображення. Після цього виводиться весь вміст відображення, всі пари штат-населення. При використанні множин і відображень не виникає ніяких претензій до швидкості пошуку. В даному випадку програма дуже швидко знаходить значення населення за введеною назвою штату. Зате ітерація в контейнерах даного типу не така швидка, як у послідовних контейнерах. Звернімо увагу, що назви штатів при виведенні розміщені в алфавітному порядку, хоча й були задані в масиві хаотично. Визначення відображення має три шаблонні аргументи: map<string, int, less<string> >mapStates; Перший з них задає тип ключа. В даному випадку це string, оскільки в рядках задається назва штату. Другий аргумент визначає тип значень, що зберігаються в контейнері (int в нашому прикладі – це населення в тисячах чоловік). Третій аргумент задає порядок сортування ключів. Ми тут сортуємо їх по алфавіту, для чого використовуємо less<string>. Ще для цього відображення задається ітератор. Вхідні дані програми первісно зберігаються в двох різних масивах. Для занесення їх у контейнер ми пишемо: mapStates[name]=pop; Цей елегантний вираз дуже нагадує вставку у звичайний масив, однак індексом такого «масиву» є рядок name, а не просто якесь ціле число. Після того, як користувач введе назву штату, програма шукає відповідне значення населення: pop=mapStates[name]; Крім того, що можна використовувати синтаксис звертання до елементів по індексах, що нагадує звертання до масивів, можна дістати доступ одночасно до обох частин відображення: ключів та значень. Це робиться за допомогою ітераторів. Ключ одержують по (*iter).first, а значення – по (*iter).second. При інших варіантах звертання ітератор працює так само, як і в інших контейнерах.
|
||||
Последнее изменение этой страницы: 2021-12-15; просмотров: 35; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.146.37.242 (0.006 с.) |