Программирование >>  Расширенная версия языка c++ 

1 ... 144 145 146 [ 147 ] 148 149 150 ... 227


если она присутствует, задает порядок сортировки элементов ассоциативного списка.

Ка мило, для любого объекта, заданного в качестве ключа, должны быть определены конструктор по умолчанию и несколько операторов сравнения.

Для класса тар определяются следующие операторы сравнения:

= = <=, !=, >, >= .)<;?.: и

В табл. 14.4 представлены функции - члены класса тар. В данной таблице тип key type - это тип ключа, а key value - тип пары ключ/значение (тип pair<Key,T>).

Таблица 14.4. Функции - члены класса тар

Функция-член

Описание

iterator begin(); constjterator begin() const; void clear();

size type count

(const key type &k) const;

const;

iterator

const iterator const;

pair<iterator, lterator>

eqiial range (const

key type &к\\

pair<const iterator,

const Iterator>

equal range(const key tYpe &k) const;

void erase(iterator

void erase(iterator начало,

iterator конец);

sizejype erase

(const key type &k];

iterator find

(const key type constjterator find

(const key type &k) const;

allocator.type

get allocator() const;

Возвращает итератор первого элемента ассоциативного списка

Удаляет все элементы ассоциативного списка

Возвращает 1 или 0, в зависимости от того, встречается или нет в ассоциативном списке ключ k

Возвращает истину, если вызывающий ассоциативный список пуст, в противном случае возвращает ложь

Возвращает итератор списка

конца ассоциативного

Возвращает пару итераторов, которые указывают на первый и последний элементы ассоциативного списка, содержащего указанный ключ k

элемент, на который указывает итератор /

Удаляет элементы, заданные между итераторами начало и конец

Удаляет элементы, нию ключа k

соответствующие значе-

Возвращает итератор по заданному ключу к. Если ключ не обнаружен, возвращает итератор конца ассоциативного списка

Возвращает распределитель памяти ассоциативного списка



Таблица 14.4 (продолжение)

Функция-член

Описание

iterator lnsert<iterator i,

const value type значение);

tempiate<class lnlter> void Ensert(lnlter начало,

Inlter конец);

,pa[r<iterator, bool>insert (const value type Азначение);

const;

iterator

(const keyjype &k); const iterator lower bound

(const key type &k) const;

size type max size() const;

reference operator[]

(const key type &/);

reverse iterator rbegin(); const reverse Iterator

rbegin() const;

reversejterator rend(); const reverse lterator

rend() const;

size type size() const;

void swap(map<Key, T, Comp, Allocator> ЛобьвктУ;.

iterator upper bound

(const key type &к); constiterator upper bound

(const key type &k] const;

valuecompare

value comp() const;

Вставляет параметр значение на место элемента или после элемента, заданного итератором / Возвращает итератор этого элемента

Вставляет последовательность элементов, заданную итераторами начало и конец

Вставляет значение в вызывающий ассоциативный список. Возвращает итератор вставленного элемента. Элемент вставляется только в случае, если такого в ассоциативном списке еще нет. При удачной вставке элемента функция возвращает значение pair<iterator, true>, в противном случае - palr<iterator, false>

сравнения ключей

Возвращает итератор первого элемента ассоциативного списка, ключ которого равен или больше заданного ключа k ...

Возвращает максимальное число элементов, которое можно хранить в ассоциативном списке

Возвращает ссылку на элемент, соответствующий ключу (. Если такого элемента не существует, он вставляется в ассоциативный список

Возвращает обратный итератор конца ассоциативного списка

Возвращает обратный итератор начала ассоциативного списка

Возвращает хранящееся на данный момент в ассоциативном списке число элементов

Обменивает элементы из вызывающего ассоциативного списка с элементами из объекта

объект

Возвращает итератор первого элемента ассоциативного списка, ключ которого больше заданного ключа k

Возвращает объект-функцию сравнения значений




В следующей программе на примере ассоциативного списка, предназначенного для хранения десяти пар ключ/значение, иллюстрируются основы использования ассоциативных списков. Ключом здесь является символ, а значением - целое. Пары ключ/значение хранятся следующим образом:

в 1 ... . ч I .; . .

Поскольку пары хранятся именно таким образом, то, когда пользователь набирает на клавиатуре ключ (т. е. одну из букв от А до J), программа выводит на экран соответствующее этому ключу значение.

В ассоциативном списке хранятся пары ключ/значение в виде объектов типа pair. Шаблон объекта типа pair имеет следующую спецификацию:

template<class Ktypm, clas урв> struct pair { , , .. .

typedef Ktyp №Й тип; тип ключа

typedef type второй тип; тип значения

Ktype первый; содержит ключ Vtyp* второй; содержит значение

конструкторы pair () ;

pair (const Ktypk, const Vtype fiv) ;

tei45late<class A, class B> pair (const<A, B> &о6ъехт) :

Ранее уже говорилось, что значение переменной первый содержит ключ и значение, а значение переменной второй - значение, соответствующее этому ключу.

Создавать пары ьслюч/значение можно не только с помощью конструкторов ьсласса pair, но и с помощью функции make pair(), которая создает объекты типа pair, используя типы данных в качестве параметров. Функция ]nake pair() - это родовая функция со следующим прототипом:

tenplat&Cclass Ktype, class Vtipe>

pair<iCtjT>e, VtK3e>make pair (const Ktype fit, const Vtype fiv) ;

Как видите, функция возвращает объект типа pair, содержащий заданные в качестве параметров функции значения типов Ktype и Vtype. Преимущество использования функции make pair() состоит в том, что она дает возможность компилятору автоматически распознавать типы предназначенных для хранения объектов, и вам не нужно указывать их явно.



1 ... 144 145 146 [ 147 ] 148 149 150 ... 227

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика