Другие языки программирования и технологии

что это означает? set <pair > s;

Отвлечённый пример:

Тебе нужно положить носок в ящик. Открываешь ящик, кладёшь носок, закрываешь ящик.
Тебе нужно положить трусы в ящик. Открываешь ящик, кладёшь трусы, закрываешь ящик.
Тебе нужно положить дирижабль в ящик. Открываешь ящик, кладёшь дирижабль, закрываешь ящик.

В алгоритма меняется только то, что кладёшь. Основные шаги остаются без изменений.
Программисты подумали, что это очнь интересная концепция - писать универсальные алгоритмы, которые бы работами с произвольными типами данных, и назвали это "шаблоном".

pair - это класс, содержащий два элемента. Но класс в C++ не может содержать поля "любого типа", поэтому использовали шаблон. Вместо того, чтобы для пары "мжчина" - "женсчина" писать отдельный класс типа
pair_of_humans { private: Man man; Woman woman; ...}
Сделали шаблон
pair < Одно, Другое > { private: < Одно > first; < Другое > second; ...}
И теперь могут использовать pair< Man, Woman >, которое при компиляции превратится в { private Man first; Woman secondl; ...}Все алгоритмы, написанные в классе pair остаются работоспособными независимо от типов "в уголках".Можно сделать pair< Man, Man >, pair< Man, Car >, pair<Man, pair < Woman, Woman > >, ни написав ни строчки лишнего кода. .
Вячеслав Волик
Вячеслав Волик
11 876
Лучший ответ
set (контейнер, который содержит уникальные элементы)
http://www.cplusplus.com/reference/set/set/
pair (пара элементов) в данном случае состоит из двух целых
http://www.cplusplus.com/reference/utility/pair/?kw=pair
Алмаз Сембаев
Алмаз Сембаев
84 764
Алмаз Сембаев Пример для вашего случая
#include
#include
#include

using namespace std;

void out(pair p) {
cout<<p.first <<':'<<p.second << endl;
}

int main()
{

set<pair > s;
cout << "test" << endl;

s.insert(pair(10,10));
s.insert(pair(10,20));
s.insert(pair(10,10));

for_each(s.begin(), s.end(), out);
return 0;
}

s.insert(pair(10,10)); во второй раз не будет в коллекции set, т. к. она уже там есть