use*_*520 1 c++ sorting compare
我有一个二维矢量数组vector<vector<int> >,我需要按顺序对其中的向量进行排序.所以......我想我会编写一个比较两个向量然后使用的函数sort()
但是我无法理解,然后无法找到适当的语法.这是我的比较功能:
bool vectorcompare (vector<int> v, vector<int> w){
for(int i=0; i<v.size(); i++){
if(v[i]<w[i]) return 1;
if(v[i]>w[i]) return 0;
}
return 1;
}
Run Code Online (Sandbox Code Playgroud)
然后我调用sort函数,它不起作用:
sort(vector.begin(),vector.end(), vectorcompare());
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
Nic*_*las 12
sort(vector.begin(),vector.end(), vectorcompare());
Run Code Online (Sandbox Code Playgroud)
vectorcompare是一种功能,而不是一种类型.也就是说,它不是你可以构建的对象.所以你不要这样做(); 你只需按原样传递函数:
sort(vector.begin(),vector.end(), vectorcompare);
Run Code Online (Sandbox Code Playgroud)
bool vectorcompare (vector<int> v, vector<int> w)
Run Code Online (Sandbox Code Playgroud)
获取参数const&,而不是值.std::vectors很大; 你不应该不必要地复制它们.
for(int i=0; i<v.size(); i++){
if(v[i]<w[i]) return 1;
if(v[i]>w[i]) return 0;
}
return 1;
Run Code Online (Sandbox Code Playgroud)
这不构成严格弱的排序.这提供小于或等于,这不是严格弱的排序.std::sort需要基于严格弱的排序进行排序.
| 归档时间: |
|
| 查看次数: |
3368 次 |
| 最近记录: |