DevGang
Авторизоваться

Стандартная библиотека шаблонов в C++

Когда мы разрабатываем некоторые приложения, нам приходится иметь дело с данными. Данные - это набор значений, и для хранения набора значений нам нужны структуры данных. CPP предоставляет встроенные библиотеки классов для всех этих структур данных, и эта коллекция классов называется STL (стандартные библиотеки шаблонов).

STL состоит из:

  1. Алгоритмы
  2. Контейнеры
  3. Итераторы
  1. Алгоритмы - это функции, используемые для выполнения операций с контейнерами.
  2. Например:

sort()

reverse()

count()

find()

binary_search()

lower_bound()

upper_bound()

next_permutation()

prev_permutation()

distance()

  1. Контейнер - это объект-держатель, в котором хранится набор других объектов. Они реализованы как шаблоны классов, что обеспечивает большую гибкость в типах, поддерживаемых как элементы.
  2. Контейнер управляет пространством для хранения своих элементов и предоставляет функции-члены для доступа к ним напрямую или через итераторы.
  3. Многие контейнеры имеют несколько общих функций и имеют общие функции. Решение о том, какой тип контейнера использовать для конкретной потребности, как правило, зависит не только от функциональности, предлагаемой контейнером, но и от эффективности некоторых из его членов.
  4. Например:

vector

list

forward_list

deque

priority_queue

stack

set

multiset

map

multimap

  1. Итератор - это любой объект, который, указывая на какой-либо элемент в диапазоне элементов (например, массив или контейнер), имеет возможность выполнять итерацию по элементам этого диапазона с использованием набора операторов (по крайней мере, с помощью метода increment ( ++) и оператора разыменования ( *)).
  2. Наиболее очевидной формой итератора является указатель: указатель может указывать на элементы в массиве и может выполнять итерацию по ним с помощью оператора приращения ( ++). Но возможны и другие виды итераторов. Например, каждый тип контейнера (например, список) имеет определенный тип итератора, предназначенный для перебора его элементов.
  3. Например:

iterator

iterator_traits

reverse_iterator

move_iterator

back_insert_iterator

front_insert_iterator

insert_iterator

istream_iterator

ostream_iterator

input_iterator_tag

Пример кода с определением каждого контейнера:

Источник:

Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

Поделитесь своим опытом, расскажите о новом инструменте, библиотеке или фреймворке. Для этого не обязательно становится постоянным автором.

Попробовать

В подарок 100$ на счет при регистрации

Получить