所以,我正在开发一个逻辑,用于在sort函数中使用自定义比较器将所有字符串分组在一起,只有当字符串都是字符串时才会返回true,如果字符串的排序版本是等效的,则可以很容易地检查它们。我开发了以下代码:
#include <iostream>
#include <string>
#include <algorithm>
bool mycomp (const string &a1, const string &a2);
#define N 5
using namespace std;
int main (void)
{
int i;
string arr[50];
for ( i = 0; i < N; i++ )
{
cin>>arr[i];
}
sort(arr,arr+N,mycomp);
for ( i = 0; i < N; i++ )
{
cout<<arr[i]<<"\n";
}
return 0;
}
bool mycomp (const string &a1, const string &a2)
{
string f1 = sort(a1.begin(),a1.end());
string f2 = sort(a2.begin(),a2.end());
return (f1 == f2);
}
现在,这段代码没有编译并显示错误,即字符串无法在mycomp中传递。并显示了很多错误。另外,我的逻辑是否正确?谢谢你的帮助。
答案 0 :(得分:1)
my_comp
应该是:
bool mycomp (std::string a1, std::string a2)
{
std::sort(a1.begin(), a1.end());
std::sort(a2.begin(), a2.end());
return a1 < a2;
}
当std::sort
修改字符串时,如果传递const引用,则必须为排序创建副本。