【发布时间】:2020-03-20 17:38:39
【问题描述】:
在使用下面给出的比较器功能时,我遇到了分段错误:-
class Solution {
public:
static bool comp( pair<int,pair<int,int> > &a, pair<int,pair<int,int> > &b )
{
if(a.first <= b.first)
return 1;
else
return 0;
}
int t1(vector<int>& nums, int target)
{
vector< pair<int,pair<int,int> > > sum_of_two;
int n=nums.size();
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
sum_of_two.push_back( make_pair( nums[i]+nums[j] ,make_pair(i,j) ) );
}
}
sort(sum_of_two.begin(),sum_of_two.end() ,comp );
return 1;
}
};
但是下面的 comp 函数工作正常,我找不到原因?
static bool comp( pair<int,pair<int,int> > &a, pair<int,pair<int,int> > &b )
{
if(a.first < b.first)
return 1;
else
return 0;
}
【问题讨论】:
-
在您致电
sort()时肯定会发生段错误吗? -
另外,需要注意的是
t1()不返回值,但是它期望返回一个int -
sort() 函数发生段错误
-
“比较”函数实际上是排序函数,你说任何元素都应该在自身之前排序,这是不可能的。
标签: c++ comparator