社区
C++ 语言
帖子详情
set的问题
thewayhome
2007-04-27 02:20:02
有個struct S我重載了它的<和==方法
假設:
S s1;S s2;
有 s1 == s2;
set<S> Set;
Set.insert(s1);
Set.find(s2)!=Set.end();
但是如果我定義Set為set<S*>,
就有
Set.insert(&s1);
Set.find(&s2) ==Set.end();
怎样解決?
...全文
162
2
打赏
收藏
set的问题
有個struct S我重載了它的<和==方法 假設: S s1;S s2; 有 s1 == s2; set Set; Set.insert(s1); Set.find(s2)!=Set.end(); 但是如果我定義Set為set, 就有 Set.insert(&s1); Set.find(&s2) ==Set.end(); 怎样解決?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
longshanks
2007-04-27
打赏
举报
回复
Set<S*>是S指针的set。那么插入&s1时,将通过比较s1的指针值,也就是s1的地址,而不是s1本身。不会调用S上的<。S的<的语义是进行Sd对象的值比较,不是指针比较。于是,只有用s1的地址去find,才能得到插入的s1。
为此,只能另行定义一个比较函数(或函数对象),作为set模板的第二个模板参数:
struct s_less
{
bool operator()(const S* s1, const S* s2) {
*s1<*s2;
}
};
set<S*, s_less> Set;
...
Meyes的《Effective STL》中关联容器一章对此有详细的解释。
taodm
2007-04-27
打赏
举报
回复
那你得起用set模板的第二个参数,使用自定义的比较函数
关于nacos2.1.1版本的No DataSource
set
问题
nacos的DataSource
set
和connect() failed (111: Connection refused) while connecting to upstream,
问题
docker安装nacos配置外部数据源mysql,解决no DataSource
set
问题
docker安装nacos配置外部数据源mysql,解决no DataSource
set
问题
Hitting
Set
碰撞集
问题
HITTING
SET
problem 碰撞集
问题
sudo: /usr/bin/sudo must be owned by uid 0 and have the
set
uid bit
set
问题
问题
在使用sudo是提示sudo: /usr/bin/sudo must be owned by uid 0 and have the
set
uid bit
set
无法进入root权限。 解决方法 在网上各处搜索的结果的整理,记录以下,方便后期查看。 reboot重启并按住Esc键进入...
java
set
初始化
java
set
初始化
set
在执行add方法时,多次报空指针异常,后来发现
Set
初始化时,如果是
Set
set
= null; 这样的话,在执行
set
.add(element)的时候会报空指针异常,具体原因不知,如果这样初始化: ...
C++ 语言
65,186
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章