我們知道,對於vector<int> A
,我們可以使用*max_element(A.begin(), A.end())
找到A
中的最大值。但是,我想知道是否有乾淨的方法找到vector<vector<int>> B
中的最大值,避免使用for
循環?查找矢量中的最大值<vector<int>>無for循環
如果我們使用for
循環的代碼可能是微不足道的,如:
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
循環。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 最後,我選擇了下面的代碼做:
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());
For循環很棒。將它們與迭代器結合起來,你就是金子。 – Quirk
@ c-wang:您是否嘗試過使用自定義比較函數來比較兩個「向量」的'* max_element()'? –
Quirk
不,怎麼樣?請給我一些代碼的提示。 –