|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Assert срабатывает только в режиме Debug
#include<cerrno> // файлы обработки ошибок в стиле С, то есть функции, которые возвращают коды ошибок
Локализация Поддержка различных языков: #include<locale> #include<clocale>
Поддержка языка программирования С++ Крайние граничные значения типов данных: #include<limits> #include<climits> #include<typeinfo> // поддержка RTTI #include<exception> // поддержка исключительных ситуаций
Работа с числами #include<complex> #include<volarray>
Строки Для работы со строками подключается файл: #include<string> Расширение.h у файлов стандартной библиотеки отсутствует.
Среди строк наибольшей популярностью пользуются следующие классы: std::string std::wstring
Итераторы
В языке С++ существуют следующие контейнеры:
std::vector<T> // обычный массив std::list<T> // список, реализация не уточняется. std::queue<T> // FIFO std::deque<T> // двунаправленная очередь std::stack<T> // LIFO std::map<K,T> // список объектов T, индексированных ключами K std::set<T> // множество std::bitset // массив битов
Для использования любого из шаблонов надо подключить заголовочный файл, название которого совпадает с названием подключаемого шаблона. В примере выше кроме параметра<T> есть еще, как правило, три параметра. Здесь они преднамеренно опущены и для них заданы стандартные значения. Например, среди этих параметров есть allocator – это класс, который отвечает за создание или удаление элементов контейнера. Благодаря ему, можно создавать элементы в любой области памяти. #include<iterator>
Итератор – абстракция указателя на элемент контейнера.
#include<iterator> void strlen(const char *str) { const char* p = str; while(*p!= 0) { ... ++p; } ... }
Указатель в строке – это итератор по строке. Можно сказать, что в примере выше типы данных char* и const char* являются итераторами строки (обычной 0-терминированной). С помощью оператора typedef можно определить такой тип данных и затем их использовать:
typedef char * iterator; typedef const char * const_iterator; Внутри каждого контейнера стандартной библиотеки С++ определены два типа данных: iterator и const_iterator, которые фактически являются указателями на элемент контейнера. Работа с этими типами данных происходит следующим образом:
void Find(std::vector<MyObject*> &v, const char *s) { typename std::vector<MyObject*>::iterator it = v.begin(); while(it!= v.end()) { const char* szName = (*it).Name; if (strcmp(szName, s) == 0) return true; ++it; } return false; } В стандартном контейнере существуют функции begin() и end(), которые возвращают соответственно итераторы на первый и последний элементы контейнера. Физически функция end() возвращает NULL.
Если итератор адресует объект, то доступ к полям следует осуществлять с помощью оператора *. Допустимо использование и оператора –>, но он может быть переопределен и поэтому работа операторов *. и –> может отличаться. Переход к следующему элементу контейнера выполняется префиксным инкрементом ++it. Допустимо использование постфиксного оператора it++, но в последнем случае может возникнуть неоднозначность в том, что увеличивается на единицу – итератор или значение, возвращаемое итератором. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |