pairin de C++ standard librarypair wordt gedefinieerd in <utility> (meestal automatisch geïncludeerd door andere headers),
en ziet er grosso modo als volgt uit:
template <class S, class T>
struct pair {
S first;
T second;
pair(const S &first_, const T &second_) : first(first_), second(second_) {}
};
template <class S, class T>
bool operator==(const pair<S,T> &p1, const pair<S,T> &p2) {
return (p1.first==p2.first) && (p1.second==p2.second);
}
template <class S, class T>
bool operator<(const pair<S,T> &p1, const pair<S,T> &p2) {
return (p1.first<p2.first) || (p1.first==p2.first && p1.second<p2.second);
}
(de werkelijke implementatie is iets ingewikkelder en biedt meer contructoren en methodes...)
Deze klasse kan handig zijn om een functie twee resultaten te laten teruggeven. Opgelet: indien het paar een "groot" object is, dan kun je beter het resultaat teruggeven via een uitvoerparameter!
De functie make_pair(a,b) is handig om een paar aan te maken zonder expliciet de template-types op te geven;
deze worden bepaald uit het type van a en b. Bv. make_pair(10,true) geeft een pair<int,bool>-object terug.
Meer uitleg in de SGI-documentatie.
[W. Schepens okt. 2008]