我正在研究一个项目,我必须对矢量进行排序,但我遇到了一些困难。
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());
}
};
我的void sortSellerVector()
函数出现了2个错误:
我的问题是:
答案 0 :(得分:4)
为了能够对vector<CService>
进行排序,最简单的方法是让CService
operator<
重载std::sort
可以用来对元素进行排序。当然,如果operator<
重载是成员函数,则此m_strSeller
重载将可以访问class CService {
private:
string m_strSeller;
public:
bool operator<(const CService& other) const
{
return m_strSeller < other.m_strSeller;
}
/////..... (other stuff)
};
:
vector<CService> vData;
// Push some CServices into the vector
sort(vData.begin(), vData.end());
然后你可以这样做:
std::sort
另一种方法是使用您提供给CService
的比较功能。您可以将其设为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;
}
的朋友,以便它可以访问私人成员:
vector<CService> vData;
// Push some CServices into the vector
sort(vData.begin(), vData.end(), compare);
然后您可以这样使用:
{{1}}