Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
cpp-exam.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
43 Кб
Скачать
☆

3. Итераторы.

Итератор предоставляет обобщенный способ перебора элементов любого контейнера – как последовательного, так и ассоциативного.

Все контейнеры имеют функции-члены begin() и end() - begin() возвращает итератор, указывающий на первый элемент контейнера. - end() возвращает итератор, указывающий на элемент, следующий за последним в контейнере.

// vector<string> vec;

vector<string>::iterator iter = vec.begin();

vector<string>::iterator iter_end = vec.end();

Итераторы поддерживают адресную арифметику. Арифметические действия с итераторами возможны только для контейнеров vector и deque. list не поддерживает адресную арифметику, поскольку его элементы не располагаются в непрерывной области памяти.

Для того чтобы напечатать все элементы вектора, нужно написать:

vector<string> name;

vector<string>::iterator itt;

for(itt=name.begin(); itt != name.end(); itt++ )

cout << *itt << '\n';

4. Прототип функции. Параметры функции (указатели, ссылки, массивы, по

умолчанию).

Прототип функции описывает ее интерфейс и состоит из типа возвращаемого функцией значения, имени и списка параметров.

Тип возвращаемого функцией значения бывает встроенным, как int или double, составным, как int& или double*, или определенным пользователем – перечислением или классом. void-функция не возвращает никакого значения.

#include <string>

#include <vector> class Date { /* определение */ };

bool look_up( int *, int ); {i->a()} double calc( double ); int count(string &i, char j); {i.a()} Date& calendar( const char ); void sum( vector<int>&, int );

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

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

Ссылка может быть один раз инициализирована значением объекта, и впоследствии изменить ее нельзя. Поскольку указатель может содержать, а может и не содержать адрес какого-либо объекта, перед его использованием функция должна проверить, не равен ли он нулю. Если параметр должен ссылаться на разные объекты во время выполнения функции или принимать нулевое значение (ни на что не ссылаться), нам следует использовать указатель. Параметр-ссылка не нуждается в этой проверке, так как всегда существует именуемый ею объект. Одна из важнейших сфер применения параметров-ссылок – эффективная реализация перегруженных операций (Если параметр объявлен как ссылка, функция получает его l-значение, а не копию).

Параметры-массивы. Массив в С++ никогда не передается по значению, а только как указатель на его первый, точнее нулевой, элемент. Размер массива неважен при объявлении параметра.

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

int funct(int a, int b=5, char =’i’){};

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]