Различия
Показаны различия между двумя версиями страницы.
— | klass_map [2025/07/06 12:39] (текущий) – создано - внешнее изменение 127.0.0.1 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== Контейнеры STL: Класс map ====== | ||
+ | Класс map в [[zametki_po_jazyku_c|языке CPP]] поддерживает поддерживает ассоциативный контейнер (т.е. ключ может быть строкой), | ||
+ | Этот класс предназначен для быстрого поиска значения по ключу. В качестве ключа может быть использовано все, что угодно, | ||
+ | Быстрый поиск значения по ключу осуществляется благодаря тому, что пары хранятся в отсортированном виде. Этот класс имеет недостаток - скорость вставки новой пары обратно пропорциональна количеству элементов, | ||
+ | |||
+ | Спецификация его шаблона имеет следующий вид: | ||
+ | <file cpp> | ||
+ | template <class Key, class T, class Comp = less< | ||
+ | class Allocator =Allocator< | ||
+ | class map | ||
+ | </ | ||
+ | Здесь key - тип данных ключей, | ||
+ | |||
+ | < | ||
+ | explicit map(const Comp &cmpfn = Comp(), | ||
+ | |||
+ | map(map< | ||
+ | |||
+ | template < class InIter> map(InIter start, InIter end,const Comp &cmpfn = Comp(), | ||
+ | const Allocator &a = Allocator()); | ||
+ | </ | ||
+ | |||
+ | Первая форма конструктора создает пустое отображение. Вторая создает отображение, | ||
+ | |||
+ | Для класса map определены следующие операторы сравнения: | ||
+ | |||
+ | < | ||
+ | == | ||
+ | < | ||
+ | <= | ||
+ | != | ||
+ | > | ||
+ | >= | ||
+ | </ | ||
+ | ====== Функции-члены класса map ====== | ||
+ | Класс map содержит перечисленные ниже функции-члены. В приведенных описаниях элемент key_type представляет тип ключа, а элемент value_type - пару элементов pair< | ||
+ | |||
+ | |||
+ | iterator begin(); | ||
+ | |||
+ | const_iterator begin() const; | ||
+ | Возвращает итератор для первого элемента в отображении. | ||
+ | |||
+ | |||
+ | -------------------------------------------------------------------------------- | ||
+ | |||
+ | void clear(); | ||
+ | |||
+ | Удаляет все элементы из отображения. | ||
+ | |||
+ | |||
+ | -------------------------------------------------------------------------------- | ||
+ | |||
+ | size_type count(const key_type &k) const; | ||
+ | |||
+ | Возвращает число вхождений ключа k в отображении (1 или 0). | ||
+ | |||
+ | |||
+ | -------------------------------------------------------------------------------- | ||
+ | |||
+ | bool empty() const; | ||
+ | |||
+ | Возвращает значение true, если данное отображение пустое, | ||
+ | |||
+ | |||
+ | -------------------------------------------------------------------------------- | ||
+ | |||
+ | const_iterator end() const; | ||
+ | |||
+ | iterator end(); | ||
+ | |||
+ | Возвращает итератор, | ||
+ | |||
+ | |||
+ | -------------------------------------------------------------------------------- | ||
+ | |||
+ | pair< | ||
+ | |||
+ | pair< | ||
+ | |||
+ | Возвращает пару итераторов, | ||
+ | |||
+ | |||
+ | -------------------------------------------------------------------------------- | ||
+ | |||
+ | void erase(iterator i); | ||
+ | |||
+ | Удаляет элемент, | ||
+ | |||
+ | |||
+ | -------------------------------------------------------------------------------- | ||
+ | |||
+ | void erase(iterator start, iterator end); | ||
+ | |||
+ | Удаляет элементы в диапазоне, | ||
+ | |||
+ | |||
+ | -------------------------------------------------------------------------------- | ||
+ | |||
+ | size_type erase(const key_type &k); | ||
+ | |||
+ | Удаляет из отображения элементы, | ||
+ | |||
+ | |||
+ | -------------------------------------------------------------------------------- | ||
+ | |||
+ | iterator find(const key_type &k); | ||
+ | |||
+ | const_iterator find(const key_type &k) const; | ||
+ | |||
+ | Возвращает итератор для заданного ключа. Если ключ не обнаружен, | ||
+ | |||
+ | |||
+ | -------------------------------------------------------------------------------- | ||
+ | |||
+ | allocator_type get_allocator() const; | ||
+ | |||
+ | Возвращает распределитель отображения. | ||
+ | |||
+ | |||
+ | -------------------------------------------------------------------------------- | ||
+ | |||
+ | iterator insert(iterator i, const value_type &val); | ||
+ | |||
+ | Вставляет значение val после элемента, | ||
+ | |||
+ | |||
+ | -------------------------------------------------------------------------------- | ||
+ | |||
+ | template <class InIter> void insert(InIter start, InIter end); | ||
+ | |||
+ | Вставляет элементы заданного диапазона. | ||
+ | |||
+ | |||
+ | -------------------------------------------------------------------------------- | ||
+ | |||
+ | pair< | ||
+ | |||
+ | Вставляет значение val в используемое отображение. Возвращает итератор для данного отображения. Элемент вставляет только в том случае, | ||
+ | |||
+ | |||
+ | -------------------------------------------------------------------------------- | ||
+ | |||
+ | key_compare key_comp() const; | ||
+ | |||
+ | Возвращает объект-функцию, | ||
+ | |||
+ | |||
+ | -------------------------------------------------------------------------------- | ||
+ | |||
+ | iterator lower_bound(const key_type &k); | ||
+ | |||
+ | const_iterator lower_bound(const key_type &k) const; | ||
+ | |||
+ | Возвращает итератор для первого элемента в отображении, | ||
+ | |||
+ | |||
+ | -------------------------------------------------------------------------------- | ||
+ | |||
+ | size_type max_size() const; | ||
+ | |||
+ | Возвращает максимальное число элементов, | ||
+ | |||
+ | |||
+ | -------------------------------------------------------------------------------- | ||
+ | |||
+ | reference operator[](const key_type &i); | ||
+ | |||
+ | Возвращает ссылку на элемент, | ||
+ | |||
+ | |||
+ | -------------------------------------------------------------------------------- | ||
+ | |||
+ | reverse_iterator rbegin(); | ||
+ | |||
+ | const_reverse_iterator rbegin() const; | ||
+ | |||
+ | Возвращает реверсивный итератор для конца отображения. | ||
+ | |||
+ | |||
+ | -------------------------------------------------------------------------------- | ||
+ | |||
+ | reverse_iterator rend(); | ||
+ | |||
+ | const_reverse_iterator rend() const; | ||
+ | |||
+ | Возвращает реверсивный итератор для начала отображения. | ||
+ | |||
+ | |||
+ | -------------------------------------------------------------------------------- | ||
+ | |||
+ | size_type size() const; | ||
+ | |||
+ | Возвращает текущее количество элементов в отображении. | ||
+ | |||
+ | |||
+ | -------------------------------------------------------------------------------- | ||
+ | |||
+ | void swap(map< | ||
+ | |||
+ | Выполняет обмен элементами данного отображения и отображения ob. | ||
+ | |||
+ | |||
+ | -------------------------------------------------------------------------------- | ||
+ | |||
+ | iterator upper_bound(const key_type &k); | ||
+ | |||
+ | const_iterator upper_bound(const key_type &k) const; | ||
+ | |||
+ | Возвращает итератор для первого элемента в отображении, | ||
+ | |||
+ | |||
+ | -------------------------------------------------------------------------------- | ||
+ | |||
+ | value_compare value_comp() const; | ||
+ | Возвращает объект-функцию, | ||
+ | ====== Пример использования класса map Key string ====== | ||
+ | Листинг применения класса map С++: | ||
+ | <file cpp> | ||
+ | #include < | ||
+ | #include < | ||
+ | #include <map> | ||
+ | |||
+ | using namespace std; | ||
+ | |||
+ | int main(){ | ||
+ | | ||
+ | typedef pair <int, int> Int_Pair; | ||
+ | map <int, int>:: | ||
+ | |||
+ | map <int, int, less< | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | // | ||
+ | | ||
+ | |||
+ | cout << "m1 =\n"; | ||
+ | for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ ){ | ||
+ | cout << " first " << m1_Iter-> | ||
+ | } | ||
+ | //key STROKA | ||
+ | cout << endl; | ||
+ | cout << "key STROKA"<< | ||
+ | |||
+ | map <char*, int > m2; | ||
+ | map <char*, int>:: | ||
+ | char str[] = "test key stroka string"; | ||
+ | | ||
+ | for ( m2_Iter = m2.begin( ); m2_Iter != m2.end( ); m2_Iter++ ){ | ||
+ | cout << " first " << m2_Iter-> | ||
+ | cout << " " << m2_Iter -> second; | ||
+ | } | ||
+ | cout << endl; | ||
+ | |||
+ | return 0; | ||
+ | } | ||
+ | </ |
📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.
📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Nginx простые примеры конфигурации
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах
7 Самых Популярных Обзоров
- Хостинг для Python-скриптов и приложений
- ТОП 4 лучших антидетект браузеров (Бесплатные & Платные)
- Подборка купонов (промокоды) на хостинг, антидетект браузеры
- Обзор THE.Hosting (PQ Hosting): надежный хостинг с профессиональной поддержкой
- Хостинг в России
- Хостинг в Европе
- Обзор браузера Dolphin {anty} для мультиаккаунтинга