独特不起作用请帮忙 它显示编译器错误
我试过把它变成
set<str> se(ss.begin(), ss.end());
ss.assign(se.begin(), se.end());
我也尝试了这个,它也显示了编译器错误
是因为bool sortByString()
我在页面中看到了这些代码,因此它有助于对矢量类对象进行排序 如果有任何其他方式请帮助
#include <cmath>
#include<set>
#include <cstdio>
#include <vector>
#include <iostream>
#include<string>
#include <algorithm>
using namespace std;
int n;
class str
{
public:
string a;
void in(string s)
{
a=s;
}
string get(){
return a;
}
void out()
{
cout<<a;
}
};
bool sortByString(str &t1, str &t2)
{
return t1.get() < t2.get();
}
string d(vector<str> a)
{
string s;
for(int i=0;i<n;i++)
s.append(a[i].get());
return s;
}
int main() {
string s,sub;
cin >> s;
int length = s.length();
int i, k = 0, c;
vector<str> ss;
str a;
n = length*((length + 1) / 2);
k = 0;
for (c = 0; c < length; c++)
{
for (i =length-c;i>=1; i--)
{
a.in(s.substr(c,i));
ss.push_back(a);
}
}
s=" ";
ss.erase(unique(ss.begin(),ss.end()),ss.end()); /*code giving compiler error pls help*/
s=d(ss);
cout<<s;
return 0;
}
答案 0 :(得分:0)
你在str中缺少operator==
。 std::unique需要此操作符。
class str
{
//....
bool operator==(const str& rop) const {
return a == rop.a;
}
};
答案 1 :(得分:0)
bool sortByString(str &t1, str &t2)
bool sortByString(const str &t1, const str &t2)
至少对于g ++。我会认为VS会编译任何内容。