pair ヘッダファイル
pairは2つの値をペアにして1つとして扱うためのクラス。
templatestruct pair { typedef T1 first_type; typedef T2 second_type; T1 first; T2 second; pair() : first(T1()), second(T2()) {} pair(const T1& x, const T2& y) : first(x), second(y) {} template pair (const pair &p) : first(p.first), second(p.second) { } }
使い方。
pairpairif;
11.04.24追記
ことあるごとにpair
#define pii pairとして、 //使うときは、 vector< pii > step //必ず、空白をあけるようにする.
//初期化 pairif = pair( 10, "aaa" )
cpair
OKだった。まぁ、よく考えればOKのはずだよね.
pairh(87.5, 78.4); h.first /= 2; cout <<"1:" << h.first <
vectorarr; arr.push_back(377); arr.push_back(455); pair h(arr[0], arr[1]); h.first /= 2; h.second /= 3; cout <<"1:" << h.first <
ちなみに、VC++ では、swap(h)とか使えるみたいだが、pair::swap (STL/CLR)なので、注意.
ちょっと複雑
int sz = numbers.size(); //vector> anl(sz); でOK!!(初期化必要なし.) vector > anl(sz, pair (0, 0)); for(int i = 0; i < sz; i++) { anl[i].first = numbers[i]; anl[i].second = binarysearch(numbers[i]); }
setとの併用でも割と使われる.
typedef pairpii; set uniq; //pairはすでにsetに必要な演算子をオーバーロードしているので、 例えば、ユニークなn次元座標の点を作るときとかは結構便利. これが構造体だと、setをつかうのに、演算子をオーバーロードしなくてはいけなくなる.