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; просмотров: 843;