Будь умным!


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

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

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

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

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

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

от 25%

Подписываем

договор

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

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

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

Вызов функции, то есть запись выражение (список_выражений), можно проинтерпретировать как бинарную операцию, и операцию вызова можно перегружать так же, как и другие операции. Список параметров функции 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. Реферат студентки 1 курса 105 группы МарииГречаниновой Преподаватель Турабов Хафиз Измаилович Мо.
2. Адаптации человеческого организма к физическим нагрузкам
3. реферат дисертації на здобуття наукового ступеня кандидата технічних наук Київ ~ Дисертаціє
4. философ это
5. Теоретические школы изучения европейской интеграции причины зарождения и механизмы развития
6. Лабораторна робота 5 Визначення параметрів виробничої системи і прогнозу її роботи на перспективу Надан
7. Вариант 1 1.Заключение сторонами договора не предусмотренного законом или иными правовыми актами- д
8. на тему- Философия сестринского дела
9. Тема 1- Общая структура ТП изготовления летательных аппаратов Комплекс действия орудий производства
10. Беккерель Антуан Анри
11. реферату- Страхування в Україні
12. Солнечные и лунные затмения
13. Лекция 8 Лекция 8 Векторный оператор набла С помощью этого оператора можно сравнитель
14.  Литра Киевской Руси 11 первая треть 12 века
15. то причинам этого не сделал обратитесь к названиюстатьи и ее содержанию
16. Лабораторная работа 1 Попробуем нарисовать девочку с лыжами
17. Понятие природнотехнической геосистемы закономерности ее формирования и функционирования
18. Да 16 Список Шиндлера17
19. Оценка и анализ производственной деятельности предприятия
20. Основные методы прогнозирования применяемые при анализе окружающей среды