То ҳоло ҳар тағйирёбанда як қиматро нигоҳ медошт. Вале чизҳое, ки барнома тавсиф мекунад, дастаҳо меоянд: кӯдак ном ва қад дорад, нуқта x ва y дорад. Ин дарс чунин қиматҳоро якҷо нигоҳ медорад, то онҳо тасодуфан ҷудо нашаванд.
Чаро қиматҳоро якҷо мекунанд
Бо ду вектор names[3] бо heights[3] танҳо ба туфайли индекс алоқаманд аст:
heights-ро танзим кунед — ва ҳоло ҳар ном дар паҳлӯи қади кӯдаки дигар меистад. Ду кӯдакро дар як вектор ҷойивазкунед ва дигарашро фаромӯш кунед — маълумот хомӯшона нодуруст мешавад. Роҳи ҳал — аз ду қимат як қимат сохтан.
pair: ду қимат дар як тағйирёбанда
pair дақиқан ду қиматро нигоҳ медорад, ва онҳо метавонанд навъҳои гуногун дошта бошанд. Нимаҳо first ва second ном доранд:
Ҳамин ҷуфт дар як сатр, бо ду роҳ. Қавсҳои фигурӣ кӯтоҳтаранд; make_pair дар кодҳои куҳна вомехӯрад. Онҳо як маъно доранд:
cout ҷуфтро чоп карда наметавонад ва cin онро хонда наметавонад, бинобар ин нимаҳоро чоп ва хонед: cin >> p.first >> p.second;. swap(p.first, p.second) нимаҳои як ҷуфтро ҷо ба ҷо мекунад, ва swap(p, q) ду ҷуфти пурраро ҷо ба ҷо мекунад.
Вектори ҷуфтҳо
Ҷуфтҳо дар вектор аз ҳама судмандтаранд. Як vector<pair<string, int>> тамоми синфро нигоҳ медорад, ва ном ҳеҷ гоҳ аз қади худ ҷудо намешавад:
kids[i] як кӯдак аст, ва kids[i].second қади ӯст. Баландтарин кӯдак ҳамон сикли ёфтани максимум аст, ки медонед. Танҳо як тағйирот: он .second-ро муқоиса мекунад ва .first-ро чоп мекунад.