342
месе
p1.fi rst == p2.fi rst && p1.second < р2.second
болса,
p1
жұбы
р2
жұбынан кіші болып саналады.
Жұпқа мəнді меншіктеу үшін
make_pair
функциясын қолдануға болады:
template
pair<Т1, T2> make_pair(const T1& х, const T2& у);
Жұптарды қалыптастыру мысалы:
#include
#include
using namespace std;
int main(){
pair p1(10, 12.3), p2(p1);
p2 = make_pair(20, 12.3);
// p2 = pair (20, 12.3) өрнегіне эквивалентті
cout << "p1: " << p1.fi rst << " " << p1.second << endl;
cout << "p2: " << p2.fi rst << " " << p2.second << endl;
p2.fi rst -= 10;
if (p1 == p2) cout << "p1 == p2\n";
p1.second -= 1;
if (p2 > p1) cout << "p2 > p1\n";
}
Программаның орындалу нəтижесі:
p1: 10 12.3
p2: 20 12.3
p1 == p2
p2 > p1
тақырыптық файлы
немесе
файлдарын қолдану
кезінде автоматты түрде қосылады.
Сөздіктер (map)
Сөздікте (
map
), дубликатты сөздіктерге (
multiset
) қарағанда, барлық
кілттер қайталанбайтын болуы тиіс. Сөздіктегі элементтер сұрыпталған түрде
сақталады, сондықтан кілттер үшін «кіші» қатынасы анықталуы тиіс. Сөздіктің
шаблонында үш параметр болады: кілттің типі, элементтің типі, «кіші»
қатынасын анықтайтын функционалды объектінің типі (функционалдық
объектілер 211 б. қарастырылған):
template >
class map{
public:
typedef pair value_type;
explicit map(const Compares comp = Compare());
template map(InputIter fi rst,
343
InputIter last, const Compares comp = Compare());
map(const map & x);
...
};
Келтірілген сипаттамада (ол қысқартылған түрде берілген) көрсетілгендей,
value_type
сөздік элементтерінің типі
Key
жəне
T
типті элементтердің жұбы
ретінде анықталады.
Бірінші конструктор көрсетілген функционалды объектіні қолдана отырып,
бос сөздік құрады. Екінші конструктор сөздікті құрады да, оған көрсетілген
итераторлар диапазонымен анықталатын элементтерді жазады. Егер элемент-
тер сұрыпталып реттелген болса, осы конструктордың жұмыс істеу уақыты
жазылатын элементтердің санына пропорционал, ал кері жағдайда элементтер
санының квадратына тең болады. Үшінші конструктор көшіру конструкторы
болып табылады.
Барлық контейнерлердегі сияқты, сөздік үшін де деструктор, меншіктеу
операциясы жəне қатынас операциясы анықталған. Сөздіктің итераторлары
12-кестеде көрсетілген. Элементтерге кілті бойынша қол жеткізу үшін
[ ]
операциясы анықталған:
Достарыңызбен бөлісу: