C++pair队组及set容器排序(笔记自用

C++pair队组及set容器排序(笔记自用

pair对组创建

成对出现的数据,利用对组可以返回两个数据
两种创建方式:

pair<type,type>p(value1,value2);
pair<type,type>p=make_pair(value1,value2);

示例:

void test01()
{
pair<string,int>p("tom",18);
cout<<p.first<<p.second<<endl;

pair<string,int>p("moumou",20);
cout<<p.first<<p.second<<endl;
}

set容器排序

主要技术点:利用仿函数,可以改变排序规则

//仿函数//重点
class mycompare
{
public:
 bool operator()(int v1,int v2)
 {
    return v1>v2;
 }
};



void test01()
{
//set存放内置数据
set<int>s1;//默认自动升序排序
s1.insert(10);
s1.insert(50);
s1.insert(30);
s1.insert(20);
s1.insert(40);
for(set<int>::interator it=s1.begin();it!=s1.end();it++)
{
 cout<<*it<<" ";
}
cout<<endl;

//指定排序规则降序
//应在自动排序前设置好
//要在参数列表里面放数据类型,所以只能用仿函数
set<int ,mycompare>s2;
s2.insert(10);
s2.insert(50);
s2.insert(30);
s2.insert(20);
s2.insert(40);
for(set<int>::interator it=s2.begin();it!=s2.end();it++)
{
 cout<<*it<<" ";
}
cout<<endl;
}

示例二:set存放自定义数据类型

class person
{
public:
    person(string name,int age)
    {
        this->m_name=name;
        this->m_age=age;
    }
    string m_name;
    int m_age;
 
};
class mycompare
{
 public:
 //不加引用则为值传递,会狗仔出一个副本发生拷贝构造
 //拷贝构造既降低效率,又容易发生浅拷贝错误
 //若vs2019的在仿函数报错,可以在函数后面加const
   bool operator()(const person &p1,const person&p2)//const
   {
     //按照年龄降序
     return p1.m_age>p2.m_age;
   }
};
void test01()
{
//自定义数据类型,都要指定排序规则,否则报错
 set<person,myconpare>s;
 person p1("moumou",16);
 person p2("dudu",20);
 person p3("mumu",18);
 person p4("kuku",19);
s.insert(p1);
s.insert(p2);
s.insert(p3);
s.insert(p4);

for(set<person>::interator it=s.begin();it!=s.end();it++)
{
 cout<<it->m_name<<it->m_age<<endl;
}

}

内容学自:http://yun.itheima.com/course/520.html?bili

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值