У вас вопросы?
У нас ответы:) SamZan.net

Вызов Функции

Работа добавлена на сайт samzan.net: 2015-07-05

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 8.4.2025

Вызов Функции

Вызов функции, то есть запись выражение (список_выражений), можно проинтерпретировать как бинарную операцию, и операцию вызова можно перегружать так же, как и другие операции. Список параметров функции operator() вычисляется и проверяется в соответствие с обычными правилами передачи параметров. Перегружающая функция может оказаться полезной главным образом для определения типов с единственной операцией и для типов, у которых одна операция настолько преобладает, что другие в большинстве ситуаций можно не принимать во внимание.

Для типа ассоциативного массива assoc мы не определили итератор. Это можно сделать, определив класс assoc_iterator, работа которого состоит в том, чтобы в определенном порядке поставлять элементы из assoc. Итератору нужен доступ к данным, которые хранятся в assoc, поэтому он сделан другом:

class assoc {

friend class assoc_iterator;

 pair* vec;

 int max;

 int free;

public:

 assoc(int);

 int& operator[](char*);

};

Итератор определяется как

class assoc_iterator{

 assoc* cs;  // текущий массив assoc

 int i;      // текущий индекс

public:

 assoc_iterator(assoc& s) { cs = &s; i = 0; }

 pair* operator()()

     { return (ifree)? &cs->vec[i++] : 0; }

};

Надо инициализировать assoc_iterator для массива assoc, после чего он будет возвращать указатель на новую pair из этого массива всякий раз, когда его будут активизировать операцией (). По достижении конца массива он возвращает 0:

main()    // считает вхождения каждого слова во вводе

{

 const MAX = 256;  // больше самого большого слова

 char buf[MAX];

 assoc vec(512);

 while (cin>>buf) vec[buf]++;

 assoc_iterator next(vec);

 pair* p;

 while ( p = next() )

     cout << p->name << ": " << p->val << "\n";

}

Итераторный тип вроде этого имеет преимущество перед набором функций, которые выполняют ту же работу: у него есть собственные закрытые данные для хранения хода итерации. К тому же обычно существенно, чтобы одновременно могли работать много итераторов этого типа.

Конечно, такое применение объектов для представления итераторов никак особенно с перегрузкой операций не связано. Многие любят использовать итераторы с такими операциями, как first(), next() и last() (первый, следующий и последний).

Список литературы

Для подготовки данной работы были использованы материалы с сайта http://www.realcoding.net




1. варіанти 130 трьома способами- а методом Гаусса; б за формулами Крамера; в методом оберненої матриці з ці
2. ЮрИнфоР 1997 Содержание Введение
3.  як впливають на авіаційні конструкції кліматичні і біологічні умови навколишнього середовища
4. на тему- Творчий і життєвий шлях Тараса Мельничука Підготувала- Коломия 2
5. тема эргатические функции.
6. Правовые нормативно-технические и организационные основы защиты населения и территорий в чрезвычайных экологических ситуациях1
7. Любимые страницы романа ЛН Толстого
8. Никколо Макиавелли
9. Лабораторная работа 2 Создание запросов на выборку и запросов ~ действий Цель работы- Ознакомление с т
10. Лабораторная работа 12