I'm working on a project and I have to sort a vector, but I'm facing some difficulties.
class CService {
private:
string m_strSeller;
public:
// Other stuff.
};
class CAnalizeTime : public CService {
private:
void sortSellerVector () {
vector<CService>m_vData;
m_vData.push_back(m_strSeller);
sort(m_vData.begin(), m_vData.end());
}
};
I'm getting 2 errors on my void sortSellerVector()
function:
My questions are:
To be able to sort a vector<CService>
, the easiest way is to just give CService
an operator<
overload that std::sort
can use to sort the elements. Of course, this operator<
overload will have access to m_strSeller
if it is a member function:
class CService {
private:
string m_strSeller;
public:
bool operator<(const CService& other) const
{
return m_strSeller < other.m_strSeller;
}
/////..... (other stuff)
};
Then you can just do:
vector<CService> vData;
// Push some CServices into the vector
sort(vData.begin(), vData.end());
An alternative method is to have a comparison function that you give to std::sort
to use. You can make it a friend of CService
so that it can access the private member:
class CService {
private:
string m_strSeller;
public:
friend bool compare(const CService&, const CService&);
/////..... (other stuff)
};
bool compare(const CService& a, const CService& b)
{
return a.m_strSeller < b.m_strSeller;
}
Which you then use like so:
vector<CService> vData;
// Push some CServices into the vector
sort(vData.begin(), vData.end(), compare);