结构体作为STL map的key时需要注意什么? (某公司招聘面试试题)已跪~~~~(_)~~~~
某公司招聘的面试环节, 有这样一个题目:结构体作为STL map的key时需要注意什么? 对于懂STL map的同学来说, 这个题目还是比较easy的, 先看程序:
#include <iostream>
#include <string>
#include <map>
using namespace std;struct Info
{string name;int score;
};int main()
{Info a, b;a.name = "eric";a.score = 90;b.name = "cat";b.score = 85;map<Info, int> m;m[a] = 1;m[b] = 2;return 0;
}
运行一下, 发现程序是有错误的。 为什么呢? 原来, 对于map来说, key必须是有序的, 也就是说, key与key之间必须能比较, 所以需要重载<号, 因此, 上述程序错误, 应该改为:
#include <iostream>
#include <string>
#include <map>
using namespace std;struct Info
{string name;int score;bool operator< (const Info &x) const{return score < x.score;}
};int main()
{Info a, b;a.name = "eric";a.score = 90;b.name = "cat";b.score = 85;map<Info, int> m;m[a] = 1;m[b] = 2;map<Info, int>::iterator it;for(it = m.begin(); it != m.end(); it++){cout << it->first.name << endl;}return 0;
}
运行正确, 结果为:
cat
eric
OK, 本文先讨论到这里, 关键是要对map的“关键字有序”有足够的认识。
结构体作为STL map的key时需要注意什么? (某公司招聘面试试题)已跪~~~~(_)~~~~相关推荐
- struct作为map的key时,需要重载该结构体
当结构体作为map中的key时,这个结构体必须重载"<"运算符, 否则将出错,看我完整代码: #ifndef WIN32 #include <string.h> ...
- C++对类(或者结构体)中字符数组赋值时,出现表达式必须是可修改的左值的问题
最近自己遇到了这类问题,在csdn上找到了很多大神给的解答,非常到位 特别感谢这位: https://blog.csdn.net/JQ_AK47/article/details/53169799 问题 ...
- C/Cpp / STL / map 的 key 为自定义的 struct 或者 class 时,有什么注意事项?
答案:需要重载 struct 或者 class 的 operator < . 原因: 因为 map 的底层是 RBTree,而 RBTree 的比较函数为如下图所示: 而该 Compare 来自 ...
- 使cson结构体中数组长度为空时,转换成Json字符串时输出空数组
cson.c 文件 getJsonArray() 函数中 if (pSrc == NULL) return ERR_MISSING_FIELD; 改为: if (pSrc == NULL) { cs ...
- map和vector的迭代器失效问题(某公司招聘笔试试题)
当删除一个STL容器(比如map, vector)中的某个元素时, 会引起迭代器失效, 所以, 我们务必提高警惕. 某次笔试, 我遇到这样一个题目: 删除map<int, int>中val ...
- 技巧:Go 结构体如何转换成 map[string]interface{}
本文介绍了Go语言中将结构体转成map[string]interface{}时你需要了解的"坑",也有你需要知道的若干方法. 我们在Go语言中通常使用结构体来保存我们的数据,例如要 ...
- golang常用库之mapstructure包 | 多json格式情况解析、GO json 如何转化为 map 和 struct、Go语言结构体标签(Struct Tag)
文章目录 golang常用库之mitchellh/mapstructure包 | go将map转换为struct 一.msgpack 二.背景 三.多json格式情况解析使用思路 四.mapstruc ...
- Go基础:指针、Map、结构体
目录 Map 按照指定顺序遍历map 元素为map类型的切片 值为切片类型的map 结构体 类型定义和类型别名的区别 struct 取结构体的地址 结构体没有构造函数,可自己实现 结构体初始化 方式一 ...
- map可以用结构体作为健值吗?
map可以用结构体作为健值吗 前言 map可以用结构体作为健值 前言 在使用map时,有时候我们需要自定义键值,才能符合程序的需要. 比如我们需要使用自定义的结构体来作为map的键值: struct ...
最新文章
- unity中app实现拖拽_10分钟让你实现在APP中对网络状态变化进行全局提示
- Codeforces Round #352 (Div. 2) A. Summer Camp 水题
- 操作系统原理第八章:内存管理
- 007-SDK框架之LYWSDKInterfaceProtocol.cpp
- 使用 AjaxManager 生成调用服务器端方法的 javascript 函数
- python测量血压_python距离测量的方法
- mysql 从备份_MySQL主从备份配置
- 信贷系统学习总结(3)——现金贷之产品架构和信审系统
- 数据库点滴积累——索引
- 初次安装Linux(Ubuntu)(ssh,ftp服务安装)
- MAC 上的 Live Writer : ecto
- html+css基础-1-屏幕居中、双飞翼布局、清除浮动
- 计算机组成与原理第三章答,计算机组成与原理第三章答案.doc
- 如何快速获得城市道路智慧照明服务认证
- 2022常见软件测试面试题
- Java学习day07-Java高级编程-多线程
- wireshark抓rtsp rtp rtcp包手把手教你分析包结构 H264 H265
- 【二】分布式训练---参数服务器训练(飞桨paddle1.8)
- 算法动态规划之杂交水果取名问题
- setInterval使用过程中报Uncaught SyntaxError: Unexpected identifier