|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Исключения. Обработка нескольких ошибочных ситуацийСинтаксис С++ позволяет указывать несколько блоков catch после одного блока try. Соответствующий блок catch будет вызван в зависимости от типа исключения. Выбор обработчика сильно привязан к типу исключения. Если типы не соответствуют, то catch будет пропущен и исключение не будет обработано. В этом случае начнётся «раскрутка стека»: функция, в которой не найден catch будет прервана и произойдёт переход на функцию, которая вызвала прерванную функцию в поисках необходимого catch. Если необходимый catch найден, то исключение обработается, если не найден, то программа завершится.
Шаблоны функций. template<class T> T sqr(T a) { return a*a; } template – ключевое слово для шаблона T – формальный параметр шаблона sqr(T a) – шаблон кода функции При обращении к шаблону формальные шаблонные параметры заменяются фактическими. Компилятор генерирует код, в соответствии с фактическими параметрами шаблона. В большинстве случаев применения шаблонных функций компилятор способен вычислить фактический шаблонный параметр без его явного указания на основании обычных фактических параметров. Шаблоны классов. template<class A> class Stack { private: A*p; int max, pos; public: Stack (int m); ~Stack (); void push(A, m); A pop(); }; template – ключевое слово для шаблона А – формальный параметр шаблона Для шаблона класса реализация методов – это также шаблоны. template<classA> Stack<A>::Stack(int n) { p=new A[m]; max = m; pos = 0; } Библиотека STL. Классификация контейнеров. Контейнер – это объект, хранящий в себе другие объекты. · Основные контейнеры: - veсtor – динамический массив с прямой адресацией - list – двухсвязный список - deque – двухсторонняя очередь · Производные контейнеры (адаптеры контейнеров): - stack – стек (доступ LIFO) - quene –очередь (доступ FIFO) - priority – очередь с приоритетами · Ассоциативные контейнеры: - map – карта, ассоциативный массив – набор пар ключ значения - multimap – ассоциативный массив допускающий дублирование ключей - set – множество - multiset - множество с дубликатами · Почти контейнеры: - string – строки - valarray – динамические массивы оптимизированные для численных вычислений - bit_set – битовое множество
Библиотека STL. Требования к элементам. Чтобы контейнер нормально работал должны выполняться следующие правила к типу элемента: 1) Должны быть конструкторы и деструкторы если элемент работает с какими либо ресурсами. 2) Для некоторых операций нужен конструктор по умолчанию. 3) Обычно нужны конструктор копирования и оператор присваивания 4) Для некоторых контейнеров элементы должны иметь операцию сравнения Если класс элемента не обладает некоторыми из этих возможностей, то определённые методы контейнеров, могут быть недоступны. В таком случае можно в контейнере хранить указатели на объекты.
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |