Головна Обговорення Лінки Пошук Prykladna СС Прикладна _КОЛЕДЖ 13.08.2026 04:57:50 (EEST=GMT+2)
ACM -
Навігація -
Теми форуму +
Чи знали ви, що... ? (beta) -
Коли ми гладимо кота, у нас знижується частота серцебиття і кров’яний тиск. А люди з сердечно-судинними захворюваннями мають шанс прожити довше, якщо у них є кіт, на відміну від тих, хто не має ні кота, ні собаки.
Події
ПнВтСрЧтПтСбНд
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

Birthday(s):
AVATARgenerak13
AVATARKsvirik
AVATARIvanKu
AVATARhomemasters

Перегляд теми
ACM Контестер | Технічні Питання | Робота сайту
Автор MAP
cupidon4uk
Користувач

Повідомлень: 393
Звідки: LNU
Зареєстрований: 02.01.09
Опубліковано 28-02-2010 22:36
Можете хтось коротко пояснити тип даних map і розказати, де він застосовується і які задачки ним можна розвязати? Будь ласка...


GoogleHireMe 557679737 mylyanyk.ivan [Lviv_NU] Надіслати приватне повідомлення
Автор RE: MAP
webmaster
Головний Адміністратор

Аватар користувача

Повідомлень: 1136
Зареєстрований: 17.03.07
Опубліковано 28-02-2010 22:59
Мап - ніби масив, але індексація може відбуватися не тільки цілими числами а будь яким типом даним (навіть вашим власним).

також може бути довільна кількість елементів, тобто можна додавати і викидати із мап (як у Сет).

Тобто Мап - це поєднання Масиву і Сету.

всередині Мапу сидить АВЛ (або червоно-чорне дерево), тому складність операцій орієнтовно O(logN) за кожну операцію (додавання, взяти, видалити).

зразки коду:

  1.  
  2.  
  3. //перший тип це ключ, другий значення
  4. //можуть бути довільні (є тільки невеличке обмеження на ключ, компілятор підскаже)
  5. map<int,string> mapa;
  6.  
  7. //map<myClass,mySecondClass> mapa2;
  8.  
  9.  
  10. mapa.insert(make_pair(23,"dfdfd"));
  11. //аналогічно можна зробити так
  12. mapa[23] = "dfdfd";
  13.  
  14. if (mapa.find(23) == mapa.end())
  15. //якщо немає такого ключа
  16. ;
  17. if (mapa.find(23) != mapa.end())
  18. //якщо існує такий ключ
  19. ;
  20.  
  21. //видаляємо елемент із ключем
  22. mapa.erase(23);


Змінив(ла) webmaster, 28-02-2010 23:02
brus07 brus07 (Lviv NU) http://acm.lviv.ua Надіслати приватне повідомлення
Автор RE: MAP
cupidon4uk
Користувач

Повідомлень: 393
Звідки: LNU
Зареєстрований: 02.01.09
Опубліковано 01-03-2010 20:27
Ага... Спасибі... Дуже чітко і ясно...
Хм.. мій багаж знань трішки поповнився. А не підкажете, які задачки можна цим способом робити? На цьому сайті є шось такого типу?

Я думаю, шо "Колобка" можна цим способом зробити. Я правий?


GoogleHireMe 557679737 mylyanyk.ivan [Lviv_NU] Надіслати приватне повідомлення
Автор RE: MAP
cupidon4uk
Користувач

Повідомлень: 393
Звідки: LNU
Зареєстрований: 02.01.09
Опубліковано 01-03-2010 20:30
Хах.. На днях дивився фільм "Номер 23", де головного героя переслідувало це число. А в тебе в зрвзку всюди число 23 xDD Містика, однако...


GoogleHireMe 557679737 mylyanyk.ivan [Lviv_NU] Надіслати приватне повідомлення
Автор RE: MAP
webmaster
Головний Адміністратор

Аватар користувача

Повідомлень: 1136
Зареєстрований: 17.03.07
Опубліковано 02-03-2010 00:11
Про "23", у мене просто як руки на клавіатуру впали так і написав.

Не правильно говорити "способом", оскільки це не спосіб а тільки структура даних, така як int, double, масив, сет і т.д. А от де вже бачете, що це Вам дасть зможу реалізувати задуманий алгоритм легше це вже інше питання.

"Колобок" можна і за допомогою цієї структури розв'язати, але є простіша структура (яка згадувалась вище).

Відразу прийшла у голову інша подібна задачі.
Порахувати скільки разів кожне слово зустрічається.
орієнтовно код буде наступний:
  1.  
  2. map<string,int> m;
  3. for (int i=0; i<N; i++)
  4. {
  5. cin >> s;
  6. m[s]++;
  7. }

brus07 brus07 (Lviv NU) http://acm.lviv.ua Надіслати приватне повідомлення
Перейти на форум:
Голосування
Що Ви б хотіли отримати в якості подарунку на змаганні з програмування?

Медалі

настільні ігри

торт

клавіатура, навушники, флешки і т.д.

квитки в кіно

квитки в аквапарк

квитки на пейнтбол

книги

футболки з логотипом змагання

Для участі в голосуваннях Ви повинні залогуватись.
Міні-чат +
Зараз на сайті -
Гостей: 2
На сайті немає зареєстрованних користувачів

Користувачів: 5,103
новачок: NataEvgten
Powered by PHP-Fusion © 2003-2006
LNU ACMania © 2004-2011 e-mail: webmaster@acm.lviv.ua
26,098,631 унікальних відвідувачів
Our projects: ACM Contester, _College.