社区
C++ 语言
帖子详情
怎样对set容器自定义比较函数?
KingI
2005-08-17 11:34:22
如果定义了一个
struct A
{
int i;
int j;
};
用set装入,set默认的比较函数是less,可对于struct类型需要重新定义一个比较函数,
应该怎样定义?
...全文
423
2
打赏
收藏
怎样对set容器自定义比较函数?
如果定义了一个 struct A { int i; int j; }; 用set装入,set默认的比较函数是less,可对于struct类型需要重新定义一个比较函数, 应该怎样定义?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
newbiestar
2005-08-17
打赏
举报
回复
给你一个例子
#include <set>
struct A
{
int i;
int j;
bool operator<(A const &ref)const
{
return i < ref.i;
}
bool operator==(A const &ref)const
{
return i == ref.i && j == ref.j;
}
};
int main()
{
A val1 = {1, 2};
A val2 = {2,2};
std::set<A> my_set;
my_set.insert(val1);
my_set.insert(val2);
}
那两个函数要定义成const函数,否则的话调用解析无法通过
newbiestar
2005-08-17
打赏
举报
回复
在A里面定义bool operator <()和bool operator==()就可以了
默认情况下你这个好像没办法放入set吧?什么比较操作都没有,set应该是不允许这样的情况发生的(只要进行插入操作就会在编译的时候报错)。
详解如何实现Laravel的服务
容器
的方法示例
1.
容器
的本质 服务
容器
本身就是一个数组,键名就是服务名,值就是服务。 服务可以是一个原始值,也可以是一个对象,可以说是任意数据。 服务名可以是
自定义
名,也可以是对象的类名,也可以是接口名。 // 服务
容器
$container = [ // 原始值 'text' => '这是一个字符串', //
自定义
服务名 'customName' => new StdClass(), // 使用类名作为服务名 'StdClass' => new StdClass(), // 使用接口名作为服务名 'Namespace\\StdClassInterface
MyStl:自己实现STL
MyStl 实现自己的STL 环境 Microsoft Windows 10 Visual Studio 2015 c++11 要点 模板实现 traits编程技巧 c++11
自定义
内存管理 常用数据结构 主体内容 两级空间配置器 基本迭代器及特例化 底层数据结构:rbtree,hashtable 顺序
容器
:vector,list,deque 顺序
容器
适配器:stack,queue 关联
容器
:
set
,map,multi
set
,multimap 无序关联
容器
:unordered_
set
,unordered_map,unordered_multi
set
,unordered_multimap
容器
均支持列表初始化,重载了相关迭代器的bool类型转换运算符以支持用于条件判断 常用算法 常用仿
函数
未实现
容器
:forward_list
容器
适配器:priority_queue 迭代器:反向迭代器
set
集合
容器
自定义
比较
函数
set
中
自定义
比较
函数
使用insert()将元素插入到集合中去的时候,集合会根据设定的
比较
函数
将该元素放到该放的节点上去。在定义集合的时候,如果没有 指定
比较
函数
,那么采用默认的
比较
函数
(按键值又小到大的顺序插入元素)。 编写
比较
函数
的两张方法: 1.如果元素不是结构体,那么可以编写
比较
函数
。 #include #include #include using namespace
map和
set
容器
自定义
比较
函数
将元素插入map和
set
中时,
容器
会根据设定的
比较
函数
将该元素放到相应节点上,在定义
容器
时,如果没有指定
比较
函数
,那么采用默认的
比较
函数
,及按照键值由小到大的顺序插入元素,很多情况下,需要自己编写
比较
函数
, map和
set
内部的数据结构都是红黑树,所以
比较
函数
是一致的,编写方法有两种: (1)如果元素不是结构体,那么可以编写
比较
函数
,下面程序编写的
比较
规则是按照键值由大到小顺序插入ma
Set
中指定
自定义
比较
函数
【代码】
Set
中指定
自定义
比较
函数
。
C++ 语言
64,647
社区成员
250,476
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章