C ++独一无二,设置不起作用

时间:2015-11-10 14:37:12

标签: c++ vector

独特不起作用请帮忙 它显示编译器错误

我试过把它变成

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; 
}

2 个答案:

答案 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会编译任何内容。