博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c/c++ 标准库 set 自定义关键字类型与比较函数
阅读量:5034 次
发布时间:2019-06-12

本文共 1786 字,大约阅读时间需要 5 分钟。

标准库 set 自定义关键字类型与比较函数

问题:哪些类型可以作为标准库set的关键字类型呢???

答案:

1,任意类型,但是需要额外提供能够比较这种类型的比较函数。

2,这种类型实现了 < 操作。

答案1的详细说明:声明set时,除了给出元素类型外,还需要给出一个比较函数的类型,注意是类型,不是变量

方式1:使用decltype,注意后面必须有*

multiset
bookstore(compareIsbn);//compareIsbn是实际存在的函数名

方式2:直接使用函数指针

multiset
bookstore(compareIsbn);//compareIsbn是实际存在的函数名

代码块索引:

代码块 功能描述
test1 对应上面的答案1
test2 对应上面的答案2

例子:

#include 
#include
#include
#include
#include
#include
using namespace std;class Book{public: Book(string bn = "") : isbn(bn){} const string& getIsbn() const{ return isbn; }private: string isbn;};bool compareIsbn(const Book &b1, const Book &b2){ return b1.getIsbn() < b2.getIsbn();}class Student{public: Student(string n = "", int a = 0) : name(n), age(a){} bool operator < (const Student &s) const{ return age < s.age; }public: string name; int age;};int main(){ //test1 自定义关键字类型,函数方式 /* //传递函数指针的第一种写法,使用decltype //multiset
// bookstore(compareIsbn); //传递函数指针的第二种写法,直接使用函数指针 //注意:尖括号里要的是类型,不可以先定义一个函数指针的变量,然后把这个变量放到尖括号里,切记!!! multiset
bookstore(compareIsbn); vector
books; for(char c = '5'; c != '1'; --c){ string tmp = "isbn_0"; tmp.insert(tmp.size(), 1, c); books.push_back(Book(tmp)); } for(auto const &s : books){ cout << s.getIsbn() << " "; } cout << endl; bookstore.insert(books.cbegin(), books.cend()); for(auto const &s : bookstore){ cout << s.getIsbn() << " "; } cout << endl; */ //test2 自定义关键字类型,重载
<方式 multiset
students; Student s1("C", 3); Student s2("A", 5); Student s3("A", 4); students.insert(s1); students.insert(s2); students.insert(s3); for(auto const &s : students){ cout << s.name << ": " << s.age << endl; }}

c/c++ 学习互助QQ群:877684253

本人微信:xiaoshitou5854

转载于:https://www.cnblogs.com/xiaoshiwang/p/9689723.html

你可能感兴趣的文章
android通知栏Notification点击,取消,清除响应事件
查看>>
php文件操作函数feof函数使用方法
查看>>
Nginx详解-服务器集群
查看>>
Mastache.js学习笔记(转自小花喵)
查看>>
论文记录
查看>>
[Keil51]51单片机定时器的方式0使用注意
查看>>
快速搭建LNMP
查看>>
laravel中的验证及利用uploadify上传图片
查看>>
python 简史
查看>>
sdc-docker
查看>>
flask 数据迁移
查看>>
2-glance 部署
查看>>
闲谈通识教育
查看>>
centeros 6.5 网络设置
查看>>
phpMyAdmin安装部署
查看>>
(一)java集合框架——Iterable
查看>>
Eclipse全面提速小技巧
查看>>
微信小程序-视图条件渲染
查看>>
C#方法名前的方括号
查看>>
前端项目里常见的十种报错及其解决办法
查看>>