Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 76; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.006 с.) |