Void main(). string str[] = {"Petya K", "Ivanova N.M.",

{

int j;

map_s1::iterator i;

map_s1 m1;

string str[] = {"Petya K", "Ivanova N.M.",

"Vovochka", "Vasia"};

long nom[] = {741596 , 3856745, 230546, 745697};

for(j = 0; j < 4;j++)

{

m1[str[j]] = nom[j]; //Занесення в словник

cout << str[j] <<" "<< nom[j] << endl;

}

m1["Petya P."] = 295678; //Доповнення словника

cout <<"ml:" << endl; // Виведення словника

for (i = m1.begin(); i !=m1.end(); i++)

cout << (*i).first << " " <<(*i).second << endl;

i = m1.begin(); i++; //Виведення другого елементу

cout << "2 elem: ";

cout << (*i).first << " " << (*i).second << endl;

//Виведення елементу по ключу

cout << "Vasia: "<< m1["Vasia"]<< endl;

}

 

Для ітераторів словника допустимі операції інкремента і декремента, але не операції + і –. Нижче приведений результат роботи програми (зверніть увагу, що словник виводиться у впорядкованому вигляді):

 

Petya K 741596

Ivanova N.M. 3856745

Vovochka 230546

Vasia 745697

ml:

Ivanova N.M. 3856745

Petya K 741596

Petya P. 295678

Vasia 745697

Vovochka 230546

2 elem: Petya K 741596

Vasia: 745697

 

Для пошуку елементів в словнику визначені наступні функції:

 

iterator find(const key_type& х);

const_iterator find(const key_type& x) const;

iterator lower_bound(const key_type& x);

const iterator lower_bound(const key_type& x) const;

iterator upper_bound(const key_type& x);

const_iterator upper_bound(const key_type& x) const;

size_type count(const key_type& x) const;

 

Функція find повертає ітератор на знайдений елемент у разі успішного пошуку або end() в іншому випадку. Функція upper_bound повертає ітератор на перший елемент, ключ якого не менше х, або end(), якщо такого елементу немає (якщо елемент з ключем х є в словнику, буде повернений ітератор на нього). Функція lower_bound повертає ітератор на перший елемент, ключ якого більше x, або end(), якщо такого елементу немає. Додамо в приведений вище приклад оператори

 

getline(cin, str);

if (m1.find(str) != m1.end())

cout << m1 [str];

else

{

cout << (*m1.upper_bound(str)).first << " " ;

cout << (*m1.lower_bound(str)).first << " " ;

}

 

Якщо ввести з клавіатури прізвище, яке є в словнику, буде виведений відповідний номер телефону, а інакше – двічі підряд перше з прізвищ, яке за абеткою слідує за введеним, наприклад:

 

Petya М. // Підкресленням позначено введення користувача

Petya Р. Petya Р.

 

Функція count() повертає кількість елементів, ключ яких рівний х (таких елементів може бути 0 або 1).

Для вставки та видалення елементів визначені функції:

 

pair<iterator, bool> insert(const value_type& x);

iterator insert(iterator position,const value_type &x);

template <class InputIter>

void insert(InputIter first, InputIter last);

void erase(iterator position);

size_type erase(const key_type& x);

void erase(iterator first, iterator last);

void clear();

 

Перша форма функції використовується для вставки в словник пари "ключ-значення". Функція повертає пару, що складається з ітератора, вказуючого на вставлене значення, і булевої ознаки результату операції: true, якщо запису з таким ключем в словнику не було (тільки в цьому випадку відбувається додавання), і false в іншому випадку (ітератор вказує на існуючий запис). Час роботи функції пропорційний логарифму кількості елементів в словнику. Таким чином, скорегувати існуючий запис, використовуючи функцію вставки, не можна. Це робиться за допомогою операції доступу по індексу. Нижче приведено декілька прикладів вставки в словник:

 

#include <iostream>

#include <string>

#include <map>

using namespace std;

 

typedef map <string,long,less <string> > map_s1; //1

 

 








Дата добавления: 2014-12-26; просмотров: 789;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.01 сек.