问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

...vector的sort算法对元素是自定义类型进行排序

发布网友 发布时间:2024-04-07 17:25

我来回答

3个回答

热心网友 时间:2024-07-22 05:35

自己写一个比较函数就可以了,作为第三个参数传到sort函数。

下面有个小例子:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

class AbA
{
public:
int m_nA;
int m_nB;
AbA(int a, int b) : m_nA(a), m_nB(b){}
};

ostream& operator << (ostream& os, const AbA& ra)
{
os << ra.m_nA << " " << ra.m_nB;
return os;
}

// 自己写的比较函数
bool newLess(const AbA& ra, const AbA& rb)
{
return (ra.m_nA < rb.m_nA );
}
int main()
{
vector<AbA> vecAbA;
vecAbA.push_back(AbA(1, 2));
vecAbA.push_back(AbA(7, 8));
vecAbA.push_back(AbA(5, 6));
vecAbA.push_back(AbA(3, 4));

sort(vecAbA.begin(), vecAbA.end(), newLess);
for (int i = 0; i < vecAbA.size(); i++)
{
cout << vecAbA[i] << " ";
}
return 0;
}

朋友,请【采纳答案】,您的采纳是我答题的动力,如果没有明白,请追问。谢谢。

热心网友 时间:2024-07-22 05:39

#include <vector>
#include <iostream>
#include <string>
#include <algorithm>    //sort函数头文件

using namespace std;

class Student {
public:
int m_num;
string m_name;

public:

Student(int n,string name)
:m_num(n),m_name(name)
{

}

void display() const{
cout << "姓名:" << m_name << " ,学号:" << m_num << endl;
}
};
//自定义的比较函数,这里是对学号进行排序
static bool myCompare(const Student& a1,const Student& a2)
{
return a1.m_num <= a2.m_num;
}

int main()
{
//创建4个学生
vector<Student> classOne;
Student a1(2,"a");
classOne.push_back(a1);
Student a2(4,"b");
classOne.push_back(a2);
Student a3(5,"c");
classOne.push_back(a3);
Student a4(1,"d");
classOne.push_back(a4);

cout << "排序前:" << endl;
vector<Student>::iterator it = classOne.begin();
while (it != classOne.end())
{
it->display();
++it;
}

sort(classOne.begin(), classOne.end(),myCompare);
cout << "排序后:" << endl;
it = classOne.begin();
while (it != classOne.end())
{
it->display();
++it;
}
return 0;
}

热心网友 时间:2024-07-22 05:34

你好,可以利用map实现。以下是代码,请参考://copyright@quark//date:2010-10-19#include#include#include#includeusingnamespacestd;voidpaixu(vector&ivec,inttopnum)//选出出现次数最多的topnum个,其余删除{vector::iteratoriter=ivec.begin();mapm;for(iter;iter!=ivec.end();++iter){m[*iter]++;}if(topnum>m.count()){return;}//循环遍历map对象,输出最多出现的元素for(inti=0;imaxPair;map::const_iteratoriter=m.begin();while(iter!=m.end()){if((*iter).second>maxPair.second){maxPair=*iter;}iter++;}if(maxPair.second>0){coutivec;ivec.push_back(3);ivec.push_back(2);ivec.push_back(1);ivec.push_back(2);ivec.push_back(1);ivec.push_back(1);ivec.push_back(1);paixu(ivec,2);getchar();}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 对你不止是喜欢电视剧男二和女二在一起吗 花间令女二男二是一对吗 郯城县核酸检测实验室在哪 率土之滨公孙瓒和曹纯能组吗 东北人西的拼音 ...里面的“出生率”,“死亡率”中的总人数包括出生,死亡人数吗?_百度... 出生率怎么算? 有没有分期时间长一点的贷款 我脚上这个跖疣很严重吗?怎么根治? pc7是什么材料? 是否有个家男宝宝带家字的名字大全 ...可一年多的感情叫我怎么放的下,我该怎么办。。 我有个女朋友坐了3年牢出来的 你说我能跟她在一起吗?(我真的很爱她... ...我们关系很好的,我现在29岁,我不知道以后该怎么办 ...犯法了要入狱五年,这让我痛不欲生手足无措,好无助;我该怎么办... 电脑版全民k歌怎么老是出错? 问一下这只派克钢笔的型号及价钱 派克钢笔怎么样?有哪位知道这个钢笔的型号和价格? 这只派克钢笔多少钱? 美国产派克牌钢笔的价格求大神帮助 c++自定义类型中有个vector容器,容器里面是一些指针,如何写这个类的复制... 秀丽在后面的成语是什么 迟来的爱简谱萨克斯教学迟来的爱简谱歌谱 有一首歌是天空又下起了白雪 ...聊QQ他说没有我陪在他身边 他的情人节过得不快乐。我该怎么回... 炒猪腰片怎么做爆炒猪腰的做法 淮山猪腰汤怎么做淮山猪腰汤的做法介绍 高一会考考哪几门? 孕妇可以吃二丁颗粒吗 心脏病患者吃啤酒烧鸭能吃吗 口苦,便秘,屁多腹胀,睡觉不踏实,有什么药物可以 中国粮食自给率多少2021 国美附中国际部招生对象要求? 和优秀的人在一起,就算你不优秀,但也不会太差 上海有哪些大的汽车油漆公司 上海哪里有做全车油漆的(桑塔纳) 大理州实验中学到大理一中怎么做公交车? (2013?大理州模拟)在实验室里进行如图所示的实验,当看到红色变成无色是... 英语听力练习材料:哈尔滨冰雪节 你好怎么样才能看到防:.漏气燃气灶真假?