Иллюстрированный самоучитель по Visual Studio .NET

Из жизни студентов

  • Использование STL

    Как показывает практика, студенты по-разному относятся к тому факту, что доля курсовых проектов, которые необходимо выполнять в виде компьютерных приложений, непрерывно растет.
  • Шаблоны

    STL – это библиотека шаблонов. Прежде всего вспомним, что такое шаблон. Различают шаблоны функций и шаблоны классов. Шаблон функций (function template) является средством языка C++, позволяющим избежать рутинного переписывания кодов функций, которые имеют сходный алгоритм, но разные типы параметров.
  • Шаблон функции быстрой сортировки

    Приведем пример реализации вышеупомянутого рекурсивного алгоритма сортировки массива переменных Quicksort. Его идея состоит в том, что меняются местами элементы массива, стоящие слева и справа от выбранного "центрального" (mid) элемента массива, если они нарушают порядок последовательности.
  • Шаблоны классов

    Шаблон классов (class template) в руководствах программиста иногда называется generic class или class generator. Шаблон действительно помогает компилятору сгенерировать определение конкретного класса по образу и подобию заданной схемы.
  • Контейнеры библиотеки STL. Последовательности типа vector.

    Теперь, когда вы вспомнили, что такое шаблоны функций и шаблоны классов, мы можем исследовать возможности стандартной библиотеки шаблонов STL. В июле 1994 года специальный комитет Международной организации по принятию стандартов (ANSI/ISO C++) проголосовал за то, чтобы принять STL в качестве части стандарта языка C++.
  • Поиск с помощью предиката

    Поиск первого объекта, который удовлетворяет условию, заданному предикатом, осуществляется с помощью шаблона функции find_if. В качестве третьего, параметра она требует задать имя функции-предиката. Введите в состав класса объявление такой функции: | //========= Предикат принадлежности к teenager | friend bool Teen (Man& m);
  • Связыватели и адаптеры

    Связывателями (binders) называются вспомогательные шаблоны функций, которые создают некий объект (adaptor), подстраивающий или преобразующий бинарный функциональный объект в унарный путем привязывания недостающего аргумента. Звучит запутанно, но суть достаточно проста.
  • Последовательности типа deque

    Контейнер типа deque (очередь с двумя концами) похож на vector в том смысле, что допускает выбор элемента по индексу и делает это быстро. Отличие состоит в том, что он умеет эффективно вставлять новые элементы как в конец, так и в начало последовательности.
  • Последовательности типа list

    Контейнеры типа list представляют собой двусвязные списки, то есть упорядоченные последовательности, допускающие проходы как вперед, так и назад. Операции вставки и удаления одинаково эффективны в любое место списка. Однако операции поиска и выбора элементов линейны относительно размера контейнера.
  • Ассоциативные контейнеры

    К ассоциативным контейнерам принадлежат: set, multiset, hash set, hash multiset, map, multimap, hash_map, hash_multimap. Они поддерживают эффективный поиск значений (values), связанных с ключом (key).
  • Контейнер типа set

    Множество (set) является ассоциативным контейнером, который хранит объекты типа key. В этом случае говорят о типе Simple Associative Container, имея в виду, что как value, так и key имеют один тип key.
  • Контейнеры типа map

    Отображение (map) является сортируемым ассоциативным контейнером, который ассоциирует объекты типа key с объектами типа value. Map – это Pair Associative Container, так как он хранит пары типа pair<const Key, Data>.
  • Контейнеры типа hash_multimap

    Хешированный ассоциативный контейнер типа hash_multimap основан на встроенной реализации хэш-таблиц. Вы помните, что преимуществом такого типа контейнеров является быстродействие, которое в среднем значительно выше, чем у сортированных ассоциативных контейнеров.
  • Стек – это несложно. Контейнеры типа queue.

    Стек – это адаптер (container adaptor), который предоставляет ограниченное подмножество всей функциональности контейнера. Термин адаптер в применении к структуре данных STL означает, что она реализована на основе какой-то другой структуры.
  • Контейнеры типа priority_queue

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

    Шаблон класса if stream позволяет работать с файловыми потоками и производить ввод объектов произвольного типа. Удобно вводить объекты прямо в контейнер. Специальный итератор (istream_iterator) помогает в этом случае воспользоваться алгоритмами (например, сору).
  • Примеры использования string

    Тип string является специализацией шаблона basic_string для элементов типа char и определен как: | typedef basic_string<char> string; | Шаблон basic_string предоставляет типы и методы, схожие с теми, что предоставляют стандартные контейнеры, но он имеет много специфических методов, которые позволяют достаточно гибко манипулировать как строками, так и их частями (подстроками).
  • Полезные константы

    STL имеет много полезных констант. Проверьте свои знания основ информатики. Знаете ли вы смысл констант, приведенных ниже? Для их использования вам потребуется подключить такие файлы заголовков: | #include <limits> | #include <climits> | #finclude <cfloat> | #finclude <numeric> | Вот фрагмент, который выводит некоторые из констант и по-английски описывает их смысл.
  • Шаблон классов valarray

    Этот шаблон разработан для оптимизации вычислений, производимых над массивами чисел фиксированного размера. Valarray похож на контейнер, но он им не является. Вы не можете динамически и эффективно наращивать его размер.
  • Сечения массива

    Проблемы оптимизации работы с матрицами давно волнуют создателей компиляторов. В то далекое время, когда решения задач электродинамики и вообще краевых задач матфизики еще интересовали влиятельных людей нашей страны (скорее, научные авторитеты убеждали их, что такие задачи следует решать), мы, используя язык PL/I или FORTRAN, конечно же, хранили и обрабатывали матрицы в одномерных массивах.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.