Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Итераторы вывода

Оценка алгоритма сортировки | Алгоритмы неустойчивой сортировки | Множественное наследование | Перегрузка операции присваивания копированием | Нахождение кратчайших путей от заданной вершины до всех остальных вершин алгоритмом Дейкстры | Доказательство |


Читайте также:
  1. Базисные средства ввода-вывода
  2. Глава 4. Простые (линейные) программы. Операторы ввода-вывода. Переменные величины
  3. Дополнительные средства ввода-вывода
  4. Итераторы динамических массивов
  5. К каким выводам приходят уфологи
  6. Команды ввода-вывода

Если итератор ввода предназначен для чтения данных, то итератор вывода
(output iterator) служит для ссылки на область памяти, куда выводятся
данные. Итераторы вывода можно встретить повсюду, где происходит хоть
какая-то обработка информации средствами STL. Это могут быть алгоритмы
(aлгоритмы STL - специальные блоки кода, выполняющие определенные операции
по обработке данных) копирования, склейки и т. п. Для данного итератора
определены операторы присвоения (=), разыменовывания (*) и инкремента
(++). Однако следует помнить, что первые два оператора предполагают, что
итератор вывода располагается в левой части выражений, т. е. во время
присвоения он должен быть целевым итератором, которому присваиваются
значения. Разыменовывание нужно делать лишь для того, чтобы присвоить
некое значение объекту, на который итератор ссылается. Итераторы ввода
могут быть возвращены итераторами потоков вывода (ostream_iterator) и
итераторами вставки inserter, front_inserter и back_inserter (описаны в
разделе "Итераторы вставки").

Ниже приведен типичный пример использования итераторов вывода:

#include <algorithm>

#include <iostream>

#include <vector>

using namespace std;

main(void)

{

int init1[] = {1, 2, 3, 4, 5};

int init2[] = {6, 7, 8, 9, 10};

vector<int> v(10);

merge(init1, init1 + 5, init2, init2 + 5, v.begin());

copy(v.begin(), v.end(), ostream_iterator<int>(cout, "n"));

}

12. Програмування подій. Приклади реалізації подій та управління потоком обчислень через події на об’єктно-орієнтованій мові програмування.

Событие в объектно-ориентированное программировании — это сообщение, которое возникает в различных точках исполняемого кода при выполнении определённых условий.

События предназначены для того, чтобы иметь возможность предусмотреть реакцию программного обеспечения.[1]

Для решения поставленной задачи создаются обработчики событий: как только программа попадает в заданное состояние, происходит событие, посылается сообщение, а обработчик перехватывает это сообщение. В общем случае в обработчик не передаётся ничего, либо передаётся ссылка на объект, инициировавший (породивший) обрабатываемое событие. В особых случаях в обработчик передаются значения некоторых переменных или ссылки на какие-то другие объекты, чтобы обработка данного события могла учесть контекст возникновения события.

Самое простое событие — это событие, сообщающее о начале или о завершении некоторой процедуры. Событие, по сути, сообщает об изменении состояния некоторого объекта. Наиболее наглядно события представлены в пользовательском интерфейсе, когда каждое действие пользователя порождает цепочку событий, которые, затем обрабатываются в приложении.

В объектно-ориентированном анализе для описания динамического поведения объектов принято использовать модель состояний.[2]

Событие — это переход объекта из одного состояния в другое. Взаимодействие объектов также осуществляется при помощи событий: изменение состояния одного объекта приводит к изменению состояния другого объекта, а событие оказывается средством связи между объектами.

Согласно [2], событие — это «абстракция инцидента или сигнала в реальном мире, который сообщает нам о перемещении чего- либо в новое состояние». Далее, выделяются четыре аспекта события:

§ метка — уникальный идентификатор события.

§ значение — текстовое сообщение о сути произошедшего.

§ предназначение — модель событий, которая принимает событие.

§ данные — данные, которые переносится от одного объекта к другому.

События применяются довольно широко. Примером могут служить всевозможные библиотеки, реализующие графический интерфес пользователя. Но события при правильном применении могут оказаться ДЕЙСТВИТЕЛЬНО ПОЛЕЗНОЙ ВЕЩЬЮ К сожалению исторически сложилось так, что в C++ нет событий. Поэтому при необходимости разработчики реализуют их на уровне библиотеки. Здесь вашему вниманию представлена реализация одной такой библиотеки. В ней есть два класса: Delegate и Event.

Класс Delegate (делегат)

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

§ В архиве, который прилагается к статье имеется заголовочный файл Delegate.h, в котором находится объявление и реализация класса Delegate. Для того, чтобы понять как используется этот класс рассмотрим пару примеров.

§ Примеры использования класса Delegate

§ Пример №1

§ #include &ltiostream&gt

§ using namespace std;

§

§ #include "Delegate.h"

§

§ class Test

§ {

§ public:

§ Test()

§ {

§ //Передаем делегату указатель на функцию

§ _delegate = Delegate(this, &ampTest::SayHello);

§ }

§

§ void SayHello()

§ {

§ cout

 

13. Обробка виключних ситуацій (exceptions). Стратегії обробки виключних ситуацій. Приклади реалізації на об’єктно-орієнтованій мові програмування.

Обрабо́тка исключи́тельных ситуа́ций (англ. exception handling) — механизм языков программирования, предназначенный для описания реакции программы на ошибки времени выполнения и другие возможные проблемы (исключения), которые могут возникнуть при выполнении программы и приводят к невозможности (бессмысленности) дальнейшей отработки программой её базового алгоритма. В русском языке также применяется более короткая форма термина: «обработка исключений».


Дата добавления: 2015-11-16; просмотров: 50 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Метод Insert класса AVLTree| Виды исключительных ситуаций

mybiblioteka.su - 2015-2024 год. (0.008 сек.)