std::deque 怎样用 stable_sort()

xili 2005-08-12 12:26:26
std::deque<my_class * ptr> 怎样用 stable_sort()?

直接用的话, 它是按照 ptr 的地址 排序的.

俺要用 my_class 的 operator<() 来排序.
...全文
117 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
foochow 2005-08-12
  • 打赏
  • 举报
回复
.....................
class myclass
{
private:
int i;
public:
myclass(int i=0):i(i){};
friend bool compares(const myclass*s1,const myclass*s2)
{
return s1->i<s2->i;
}
};
deque<myclass*>temp;
temp.push_back(new myclass(3));
temp.push_back(new myclass(2));
temp.push_back(new myclass(6));
temp.push_back(new myclass(2));
temp.push_back(new myclass(15));
temp.push_back(new myclass(10));
stable_sort(temp.begin(),temp.end(),compares);

.................
lw1a2 2005-08-12
  • 打赏
  • 举报
回复
类的指针用类的规则来排序?
foochow 2005-08-12
  • 打赏
  • 举报
回复
必须写 friend 吗?
...
可以像 boxban(冻酸梨) ( ) 那样,也可以
class myclass
{
private:
int i;
public:
myclass(int i=0):i(i){};
int couts()const
{
return i;
}
};
bool compares(const myclass*s1,const myclass*s2)
{
return s1->couts()<s2->couts();
}
boxban 2005-08-12
  • 打赏
  • 举报
回复

bool comp_my_class_ptr(const my_class* a, const my_class* b)
{
return (*a) < (*b);
//需在my_class 类中重载 bool operator < (const my_class& r)
}

std::stable_sort(q.begin(), q.end(), comp_my_class_ptr);
darkstar21cn 2005-08-12
  • 打赏
  • 举报
回复
重载operator<()也可以的
stable_sort(temp.begin(),temp.end());
xili 2005-08-12
  • 打赏
  • 举报
回复
必须写 friend 吗?

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧