vector<int> A
については、*max_element(A.begin(), A.end())
を使用してA
の最大値を見つけることができます。しかし、私はループがfor
ループを避けて、vector<vector<int>> B
の最大値を見つけるためのきれいな方法があるかどうかを知りたいですか?forループなしの<vector<int>ベクトルの最大値を見つける
int maxvalue = INT_MIN;
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
maxvalue = max(maxvalue, B[i][j]);
または
int maxvalue = INT_MIN;
for (int i = 0; i < m; i++)
{
int temp = *max_element(B[i].begin(), B[i].end());
maxvalue = max(maxvalue, temp);
}
しかし、私はまだそれが十分にきれいではない感じ:我々は
for
ループを使用している場合
は、コードは次のように些細なことでした。そして私はfor
ループが好きではありません。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 最後に、私はそれを行うには、次のコードを選択しました:代わりにあなたがstd::for_each
を使用することができfor
ループの
auto itv = max_element(A.begin(), A.end(), [](vector<int>& a, vector<int>& b)
{ return *max_element(a.begin(), a.end()) < *max_element(b.begin(), b.end()); });
int ans = *max_element(itv->begin(), itv->end());
ループは素晴らしいです。それらをイテレータと組み合わせると、あなたは金です。 – Quirk
@ c-wang:2つの 'ベクトル'の '* max_element()'を比較するカスタムコンパレータ関数を使ってみましたか? –
Quirk
いいえ、どうですか?コードのヒントを教えてください。 –