値の配列の最大要素の位置(値ではない)を返す標準関数はありますか?
例えば:
次のような配列があるとします。
sampleArray = [1, 5, 2, 9, 4, 6, 3]
sampleArray[3]
配列の最大値であることを示す3の整数を返す関数が必要です。
回答:
STLでstd::max_element
、イテレータを提供します(std::distance
本当に必要な場合は、でインデックスを取得するために使用できます)。
int main(int argc, char** argv) {
int A[4] = {0, 2, 3, 1};
const int N = sizeof(A) / sizeof(int);
cout << "Index of max element: "
<< distance(A, max_element(A, A + N))
<< endl;
return 0;
}
または、1行で書く:
std::cout << std::distance(sampleArray.begin(),std::max_element(sampleArray.begin(), sampleArray.end()));
std::max_element
シーケンスを区切る2つのイテレータを取り、そのシーケンスの最大要素を指すイテレータを返します。さらに、要素の順序を定義する関数に述語を渡すことができます。
STLにはmax_elements関数があります。次に例を示します。http://www.cplusplus.com/reference/algorithm/max_element/