tieとminmax

ネタ元:A quick and dirty introduction(PDF)


tieとminmaxを組み合わせると以下のようなことができます。

int x;
int y;

std::tie(x, y) = std::minmax(4, 2); // 小さい方をxに代入、大きい方をyに代入

minmaxはpairが返ってきますが、p.first/p.secondで取り出すのがめんどくさいので
tieを使ったほうがすっきりします。


同じように、tieとminmax_elementを組み合わせると
一番小さい要素と一番大きい要素を取り出せます。

std::vector<int> v;
v.push_back(3);
v.push_back(1);
v.push_back(4);

std::vector<int>::const_iterator x;
std::vector<int>::const_iterator y;

std::tie(x, y) = std::minmax_element(v.begin(), v.end()); // *xは1、*yは4