текущий элемент становится начальным head
if (k < p->key) { // вставить перед p (в начало) current = new Link<K,V>(k,def_val); current->pre = p->pre; current->suc = p; if (p == head) // текущий элемент становится начальным head = current; else p->pre->suc = current; p->pre = current; return current->value; }
Link<K,V>* s = p->suc; if (s == 0) { // вставить после p (в конец) current = new Link<K,V>(k,def_val); current->pre = p; current->suc = 0; p->suc = current; return current->value; } p = s; } }
Операция индексации возвращает ссылку на значение, которое соответствует заданному как параметр ключу. Если такое значение не найдено, возвращается новый элемент со стандартным значением. Это позволяет использовать операцию индексации в левой части присваивания. Стандартные значения для ключей и значений устанавливаются конструкторами Map. В операции индексации определяется значение current, используемое итераторами.
Реализация остальных функций-членов оставлена в качестве упражнения:
template<class K, class V> void Map<K,V>::remove(const K& k) { // см. упражнение 2 из §8.10 }
template<class K, class V> Map<K,V>::Map(const Map<K,V>& m) { // копирование таблицы Map и всех ее элементов }
template<class K, class V> Map& Map<K,V>::operator=(const Map<K,V>& m) { // копирование таблицы Map и всех ее элементов }
Теперь нам осталось только определить итерацию. В классе Map есть функции-члены first(), last() и element(const K&), которые возвращают итератор, установленный соответственно на первый, последний или задаваемый ключом-параметром элемент. Сделать это можно, поскольку элементы хранятся в упорядоченном по ключам виде.
Итератор Mapiter для Map определяется так:
template<class K, class V> class Mapiter { friend class Map<K,V>;
Map<K,V>* m; Link<K,V>* p;
Mapiter(Map<K,V>* mm, Link<K,V>* pp) { m = mm; p = pp; } public: Mapiter() { m = 0; p = 0; } Mapiter(Map<K,V>& mm);
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий