一个关于set的面试题
来源:互联网 发布:java防止api重复提交 编辑:程序博客网 时间:2024/06/03 23:51
面试的时候经常会被问到stl,stl中最常问的就是vector,map还有set。如果面试官问你的是基础的问题这些还好回到,但是要是问你一些需要思考的问题呢?(面试官也要找存在感的,要是问的太浅,你都会还怎么混,哈哈)
下面来说一下一个关于set的问题。
面试官:set的底层是用什么实现的?
面试者:二叉树。。。。。
面试官:(内心独白:这个都不知掉……)。有一个结构体,里面有两个字符串,如何在一个set中查找这个结构体?
面试者:...........(内心独白:我平时做的都是int、long long,string 啊,哪里有结构体)。这个还真不知道。
其实这个问题也是很简单的,对于复杂的数据结构,stl中提供了自定义的方法进行处理,下面就以结构体为例,实现set的插入和查找。
#include <iostream>#include <set>#include <iterator>using namespace std;struct TSimInfo{char szbegin[32];char szend[32];TSimInfo(){memset(this,0x0,sizeof(TSimInfo));}bool operator==(const TSimInfo &stSiminfo) const{if(strcmp(this->szbegin,stSiminfo.szbegin)<=0 && strcmp(this->szend,stSiminfo.szend)>=0){return true;}else {return false;}}};class compoper{public :bool operator() (const TSimInfo &left,const TSimInfo &right) const {if(strcmp(left.szbegin,right.szbegin)>=0){return true;}else if(strcmp(left.szend,right.szend)>=0){return true;}else {return false;}}};int main(int argc, char *argv[]) {TSimInfo stTest;strcpy(stTest.szbegin,"222222222");strcpy(stTest.szend,"333333333");if(strcmp(stTest.szbegin,stTest.szend)>0){cout<<"输入参数错误"<<endl;return 0;}set<TSimInfo,compoper> setV;TSimInfo tmp;strcpy(tmp.szbegin,"1111111");strcpy(tmp.szend, "5555555");setV.insert(tmp);strcpy(tmp.szbegin,"666666666");strcpy(tmp.szend, "8888888888");setV.insert(tmp);if(std::find(setV.begin(),setV.end(),stTest)==setV.end()){cout<<"no"<<endl;}else {cout<<"ok"<<endl;}return 0;}就是这么简单,很多时候不是不会,而是你没去看。
阅读全文
0 0
- 一个关于set的面试题
- 关于一个“一个有趣的面试题”
- 一个关于截取字符串的面试题!
- 关于unsiged char 的一个面试题
- 一个关于字符串拷贝的面试题
- 一个关于fork的面试题
- 一个关于String.valueof()的面试题
- 关于类构造的一个面试题
- 关于指针的一个面试题
- 一个关于双链表的C面试题
- 关于vector容器的一个面试题
- 关于autoreleasepool一个常见的面试题
- 一个关于malloc的面试题
- 一个关于布尔值的面试题
- 关于hash的一个面试题
- 关于测试一个接口的面试题
- 一个关于fork()的面试题
- 一个关于fork()的面试题
- 前端入门理解
- 中国行政区划的英文介绍
- clean code读书笔记一
- Android之运行Java.lang.UnsatisfiedLinkError的错误解决办法
- android URL获取图片显示到ImageView 控件上
- 一个关于set的面试题
- 数据可视化1---直方图-折线图
- Android实例程序中Gallery报错:R.styleable unresolved解决办法
- 有用的网址
- ssm框架集成Quartz定时器
- 小度鱼(React-Native)
- leetcode 69 Sqrt
- 教你Mac OS系统四种修改Hosts文件的方法
- Erlang Unicode 两三事