АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Assert срабатывает только в режиме Debug

Читайте также:
  1. S: Ситуация, когда на рынке имеется только один покупатель, называется ###.
  2. S: Ситуация, когда на рынке имеется только один покупатель, называется ###.
  3. Антикоррупционное дежавю, или о позициях Украины в глобальных рейтингах и не только
  4. В итоге, наши предприятия вынуждены будут бороться не только за внешний, но и за свой, белорусский рынок.
  5. В каждую гамету попадает только один аллель из пары аллелей данного гена родительской особи.
  6. Возвратившиеся члены бригады могут приступить к работе только с разрешения производителя работ (наблюдающего).
  7. Война не показывает, кто прав, только кто ошибается.
  8. Вопрос 9. Принцип осуществления правосудия только судом. Независимость судей и подчинение их только закону. Гарантии независимости судей.
  9. ВЫ МОЖЕТЕ ДАТЬ ТОЛЬКО ТО, ЧТО ИМЕЕТЕ
  10. ВЫ МОЖЕТЕ ДАТЬ ТОЛЬКО ТО, ЧТО ИМЕЕТЕ
  11. Говорите только благое».

 

#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++, но в последнем случае может возникнуть неоднозначность в том, что увеличивается на единицу – итератор или значение, возвращаемое итератором.


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.)