1. 程式人生 > 其它 >對vector<int> 的陣列使用sort排序出錯

對vector<int> 的陣列使用sort排序出錯

技術標籤:粗心錯誤c++資料結構排序演算法

刷題時,對於多個vector陣列按照第二個元素的大小進行排序,其實很簡單。
力扣1710. Maximum Units on a Truck
但是一開始程式碼寫的是

class Solution {
public:
    static bool cmp(vector &a,vector&b)
    {
        return a[1]>b[1];
    }
    int maximumUnits(vector<vector<int>>& box, int n) {
        sort
(box.begin(),box.end(),cmp); int ans=0; for(int i=0;i<box.size();i++){ if(n>=box[i][0]){ ans+=(box[i][0]*box[i][1]); n-=box[i][0]; } else{ ans+=(n*box[i][1]); break; } }
return ans; } };

執行程式碼時,編譯出錯

Line 3: Char 21: error: use of class template ‘vector’ requires template arguments; argument deduction not allowed in function prototype
static bool cmp(vector &a,vector&b)

但是覺得思路沒錯啊,還查了一會sort對於vector容器的排序,但是基本上都是說的是,使用sort對一個vector排序,並不是涉及到多個vector之間的排序。

難道sort不能用於多個vector之間的排序?
結果一看評論區,有個人和我的做法一模一樣。只不過,cmp函式是這麼寫的

static bool cmp(vector<int> &a,vector<int> &b)
    {
        return a[1]>b[1];
    }

我再一看自己的程式碼裡面,只有一個vector,原來是忘了寫vector< int >,因為排序的元素是vector< int > ,雖然規則是哪一個的第一個元素大,誰在前。
總之,這是一個錯誤,粗心錯誤。