Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Voprosy_k_ekzamenu_po_informatike

.pdf
Скачиваний:
41
Добавлен:
09.06.2015
Размер:
2.24 Mб
Скачать

41. ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ ПРЯМОГО ДОСТУПА К ДАННЫМ.

Для обеспечения произвольного (прямого) доступа используется внутренний указатель файла, который определяет текущий индекс обрабатываемого байта файла, и две пары функций:

seekg(). Устанавливает указатель в позицию с номером внутри файла для чтения. Примеры:

in.seekg(4); in.seekg(4, in.end);

seekp(). Устанавливает указатель в позицию с номером внутри файла для записи.

out.seekp(4); out.seekp(4, out.end);

tellg(). Возвращает текущую позицию указателя потока ввода.

streampos n = in.tellg();

tellp(). Возвращает текущую позицию маркера потока вывода.

streampos n = out.tellp();

Константы позиционирования:

Значение

Перемещение указателя

 

 

ios_base::beg

От начала

 

 

ios_base::cur

С текущей позиции

 

 

ios_base::end

С конца

 

 

71

42. ШАБЛОНЫ ФУНКЦИЙ, ОПРЕДЕЛЕНИЕ И НАЗНАЧЕНИЕ.

Шаблоны — средство языка C++, предназначенное для кодирования обобщённых алгоритмов, без привязки к некоторым параметрам (например, типам данных, размерам буферов, значениям по умолчанию). Шаблоны позволяют создавать параметризованные классы и функции. Параметром может быть любой тип или значение одного из допустимых типов (целое число, enum, указатель на любой объект с глобально доступным именем, ссылка)

Объявление и определение шаблонов в С++. Так выглядит шаблон функции определения минимума:

template <typename T> T min(T a, T b) { return a < b ? a : b;

}

template – используется для обозначения функции-шаблона. typename T – определяет параметр, который будет хранить информацию о том, какой именно тип данных был передан в шаблон. T – возвращаемое значение, min – название, (T a, T b) – аргументы, а далее идет тело функции.

Для вызова этой функции можно просто использовать её имя:

min( 1, 2 ); min( 'a', 'b' );

min( string( "abc" ), string( "cde" ) );

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

Конкретизация. Процесс подстановки тип и значений вместо параметров называется конкретизация шаблона. При конкретизации шаблона вместо параметра типа поставляется фактический встроенный или определаный пользователем тип.

Имя параметров шаблона, скрывает объекты с аналогичным именем в глобально области видимости по отношению к шаблону видимости. Если в теле шаблона функции необходим доступ к таким внешним объектам с одинаковыми именами, нужна операция доступа к области видимости. Обязательным является включение всех параметров шаблона в список

72

определяемых шаблонной функцией, вне зависимости от того, как будет использоваться данный параметр.

Основные свойства параметров шаблона.

-Объект или тип объявленный внутри шаблонной функции, не могут иметь тот же самый тип что и какой-то из параметров.

-Имена параметров должны быть уникальными в о всем определении шаблона.

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

-В списках параметров, если их несколько, перед каждым записывается ключевое слово class и разделяется ','.

-Нельзя к одному ключевому слову записать несколько индентификаторов.

-С помощью имён параметров шаблона могут описываться формальные параметры функции, тип возвращаемого значения и тип любых локальных величин шаблонной функции.

-Так же как и для простой функции, для шаблонной существует описание и определение.

73

43. ШАБЛОНЫ ФУНКЦИЙ, ОСОБЕННОСТИ ИХ ИСПОЛЬЗОВАНИЯ.

Шаблоны — средство языка C++, предназначенное для кодирования обобщённых алгоритмов, без привязки к некоторым параметрам (например, типам данных, размерам буферов, значениям по умолчанию). Шаблоны позволяют создавать параметризованные классы и функции. Параметром может быть любой тип или значение одного из допустимых типов (целое число, enum, указатель на любой объект с глобально доступным именем, ссылка)

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

Пример программы для нахождения наибольшего элемента в паре.

#include <iostream> using namespace std;

template <class T>

T GetMax (T a, T b) { T result;

result = (a>b)? a : b; return (result);

}

int main () {

int i=5, j=6, k; long l=10, m=5, n; k=GetMax<int>(i,j); n=GetMax<long>(l,m); cout << k << endl; cout << n << endl; return 0;

}

74