C++ で最小値のインデックスを見つけたいと思いますstd::vector<double>
。これはやや冗長な実装です:
//find index of smallest value in the vector
int argMin(std::vector<double> vec)
{
std::vector<double>::iterator mins = std::min_element(vec.begin(), vec.end()); //returns all mins
double min = mins[0]; //select the zeroth min if multiple mins exist
for(int i=0; i < vec.size(); i++)
{
//Note: could use fabs( (min - vec[i]) < 0.01) if worried about floating-point precision
if(vec[i] == min)
return i;
}
return -1;
}
(上記の実装で間違いに気づいたら教えてください。私はそれをテストしましたが、私のテストは完全ではありません。)
上記の実装はおそらく車輪の再発明だと思います。可能であれば、組み込みコードを使用したいと思います。このための STL 関数への 1 行の呼び出しはありますか? または、誰かがより簡潔な実装を提案できますか?