Использование библиотеки STL
Пары объектов (pair)
В качестве введения к данной лекции поговорим о «парах» объектов в STL -- std::pair.
Пара -- это просто шаблонная структура, которая содержит два поля, возможно, различных типов. Поля имеют названия first и second. В максимально краткой форме прототип пары может выглядеть следующим образом:
template<typename T1, typename T2> struct pair { T1 first; T2 second; };К примеру, pair<int,int> есть пара двух целых чисел. Более сложный пример: pair<string, pair<int,int> > -- строка плюс два целых числа. Использовать подобную пару можно, например, так:
pair<string, pair<int,int> > P; string s = P.first; // Строка int x = P.second.first; // Первое целое int y = P.second.second; // Второе целоеОсновной причиной к использованию pair является то, что объекты pair можно сравнивать. Поэтому, при всей кажущейся простоте, пары активно используются как внутри библиотеки STL, так и программистами в своих целях.
Сравнение пар предоставляет широкие возможности для экстремального программирования. Массив пар можно упорядочить, при этом упорядочивание будет производиться по полям в порядке описания пар слева направо.
Например, необходимо упорядочить целочисленные точки на плоскости по полярному углу. Одним из простых решений является поместить все точки в структуру вида
vector< pair<double, pair<int,int> >где double -- полярный угол точки, а pair<int,int> -- её координаты. После этого один вызов стандартной функции сортировки приведёт к тому, точки будут упорядочены по полярному углу.
Также пары активно используются в ассоциативных контейнерах, но об этом мы поговорим позднее.