関数foo()と何らかの値の入った配列nyanがあって,

foo(nyan[n])が最小になるn取得するって感じのコードを某所で見つけた.
こんな感じ.

別に問題ないんだけれども, とにかくCoolじゃなくて個人的にもにょる…

ってことでこんな感じなのを思いついた. もっとよさ気な書き方があったら教えてくださいー.
動作確認はclang++ -Wall -Wextra -std=c++14 prog.ccでしました.

std::min_element

これくらい標準ライブラリの何かでパパッとやって終わりそうだなとと思って<algorithm>ヘッダで定義されてる関数一覧を眺めていたら, 面白そうなのを見つけた.

std::min_element

Parameters

first, last - forward iterators defining the range to examine
cmp - comparison function object (i.e. an object that satisfies the requirements of Compare) which returns true if a is less than b.

これを使ってみることにした.

constとかcbegin(), cend()を使わなければもう少し短くなるけれど, 気分的に.

正直Coolになったかは微妙なんだけど

, std::min_elementに関しては複雑な比較もできそうで面白いなと思った.

番外編

minがあれば当然maxもある.
std::minmax_element - cppreference.com

そして, 同じく3番目の引数に関数オブジェクトを渡して動作をカスタムできる.

あれ…? もしかして……

実行結果

逆転できちゃったよ()