В данной статье мы рассмотрим некоторые структуры данных, которые представлены в C++.

Все эти структуры представлены в Стандартной библиотеке шаблонов (STL).

Структура данных - тип организации данных, позволяющий использовать эффективный доступ к модификации данных. Например, массив с константным размером является простейшей структурой данных. В данной статье мы рассмотрим простейшие структуры, такие как map и set. Более подробно структуры данных будут освещены вот здесь.

std::set

Set - множество. А что такое множество? Множество - это набор объектов. В обычном set нет повторяющихся элементов. Важно: set сортирует объекты по возрастанию.

Подключается set следующей строчкой:

#include <set>

А объявляется set вот так:

set<int> s;

Так же, как и для vector, для set определён набор методов. В таблице приведены некоторые из них:

insert(…) Добавить элемент в set
find(…) Возвращает итератор на найденный элемент, иначе вернет итератор end
erase(n) Удаляет элемент, равный n
empty() Возвращает true, если пустой
clear() Очищает содержимое

Ниже в коде приведен пример использования этих методов:

set<int> s;
s.insert(1);
s.insert(5);
if (s.find(1) != s.end())
	cout << "1 was founded" << endl;
else
	cout << "1 was not founded" << endl;
if (s.find(7) != s.end())
	cout << "7 was founded" << endl;
else
	cout << "7 was not founded" << endl;
s.erase(2);
for (auto x : s)
	cout << x << " ";

Для того, чтобы хранить несколько одинаковых значений, используйте std::multiset

multiset<int> s;

std::map

std::map являет собой нечто вроде словаря, в нем существуют два параметра - ключ и значение. Пример: пусть у нас есть школьный класс. Тогда нам нужно ответить на вопрос: а сколько школьников того или иного роста у нас есть? В данном случае ключем будет рост, а значением - колличество человек данного роста.

Чтобы использовать std::map, подключаем соответствующий заголовочный файл: <map>.

map<int, int> people;
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
	int heigh;
	cin >> heigh;
	people[heigh]++;
}

for (auto x : people)
	cout << x.first << " - " << x.second << endl;	

Все указанные в таблице методы так же относятся и к map.

Так же существует multimap. По аналогии с multiset можно догадаться, что для в multimap существует множество значений для заданного ключа. Multiset подклчается соответствующей библиотекой.