当前位置: 首页 > news >正文

[C++进阶]map和set的相关题目

1. 下面关于map和set说法错误的是()

A.map中存储的是键值对,set中只储存了key

B.map和set查询的时间复杂度都是O(log_2N)

C.map和set都重载了[]运算符

D.map和set底层都是使用红黑树实现的

解析:

  A:正确,map和set的概念

  B:正确,因map和set的底层结构都是红黑树,而红黑树是近似的平衡二叉搜索树,故查询时间 复杂度为O(log_2N)

  C:错误,map中重载了[]运算符,因为其需要通过key获取value,set中没有

  D:正确

  因此:选择C

2.下面关于map的说法正确的是()

A.map的查询效率是O(log_2N),因为其底层使用的是二叉搜索树

B.map的key和value的类型可以相同

C.map中的有序只能是升序,不能是降序

D.map中的key可以直接修改

解析:

A:错误,map的查询效率是O(log_2N)是正确的,但map的底层结构不是二叉搜索树,而是红黑树

B:正确,key和value的类型由用户自己设置,可以相同也可以不同,取决于应用场景需要

C:错误,map可以是升序,也可是降序,默认情况下是升序,如果需要降序,需要用户在实例化 map时指定比较规则

D:错误,map中key不能修改,因为如果修改了就不能保证红黑树的特性了,即有序

因此:选择B

3.下面关于set的说法正确的是()

A.set中一定不能存储键值对,只能存储key

B.set可以将序列中重复性的元素去除掉

C.set中不能存储对象,因为对象字段较多,没有办法比较

D.set默认是升序,因为其默认是按照大于的方式比较的

解析:

  A:错误,set中可以存储键值对,实例化set时,将set中元素类型设置为pair即可

  B:正确,因为set中的key是不能重复的

  C:错误,set中任意类型元素都可以存储,存储对象时,需要用户提供比较规则

  D:错误,set默认是升序,正确,但是其内部默认不是按照大于比较,而是按照小于比较

  因此,选择B

4.下列说法正确的是()

A.set中的某个元素值不能被直接修改

B.map和unordered_map都是C++11提供的关联式容器

C.因为map和set的底层数据结构相同,因此在实现时set底层实际存储的是<key, key>的键值对

D.map和multimap中都重载了[]运算符

 A:正确,因为set要保证其有序,因此set中元素不能被直接修改,若要修改可以先删除,在插入

B:错误,map是C++98中已存在的,unordered_map是C++11中才有的

C:错误,map和set底层结构都是红黑树,而其底层红黑树在实现时并没有区分是存k模型还是KV 模型

D:错误,map中key是唯一的,每个key都有与之对应的value,经常需要通过key获取value,因此 map为了形象简    单重载了[]运算符, multimap中key是可以重复的,如果重载了[]运算符,给定 一个key时,就没有办法返回     value了,因此,multimap中没有重载[]运算符

5.前K个高频单词

代码解析:

bool compare(const pair<string, int>& s1, const pair<string, int>& s2) {// 频率相等,按字母排序if(s1.second == s2.second) return s1.first < s2.first;// 按照频率排序else return s1.second > s2.second;
}class Solution {
public:vector<string> topKFrequent(vector<string>& words, int k) {map<string, int> count;for(string& word : words) {count[word] ++;}vector<pair<string, int>> res(count.begin(), count.end());sort(res.begin(), res.end(), compare);vector<string> ans;for(int i = 0; i < k; i ++) {ans.push_back(res[i].first);} return ans;}
};

6.单词识别

代码解析:

#include <iostream>
#include <string>
#include <map>
#include <vector>
#include<algorithm>
using namespace std;
typedef pair<string,int> Word;
bool cmp(Word w1,Word w2)
{return w1.second>w2.second;
}
int main()
{map<string,int> mp;string s;while(getline(cin,s)){for(int i=0,j=0;i<s.size();i++){if(s[i]==' '||s[i]=='.'){string t=s.substr(j,i-j);if(isupper(t[0]))t[0]=tolower(t[0]);j=i+1;mp[t]++;}}vector<Word> v(mp.begin(),mp.end());sort(v.begin(),v.end(),cmp);for(int i=0;i<v.size();i++)cout<<v[i].first<<":"<<v[i].second<<endl;}return 0;
}

本篇类似番外,目的只是方便大家巩固,如有错误感谢指正

相关文章:

  • 数据结构-c/c++实现栈(详解,栈容量可以动态增长)
  • MySQL——基础操作
  • 【Unity】简单机甲运动系统——坦克式操控方式
  • 房产报备小程序房产报备系统源码搭建方案
  • GPT-SoVITS-WebUI 初体验
  • 专栏引言:迈向大数据分析的最前沿
  • Java 单元测试指南
  • Nginx IP 哈希负载均衡配置:实现请求智能分发
  • WebForms DataList 控件深入解析
  • Vulnhub靶场 | DC系列 - DC7
  • Vue3安装Element Plus
  • 怎样通过bs4找出程序中 标签<div class=“List2“>中所有的<li>的内容?
  • 【计算机网络】计算机网络的性能指标
  • 5.3二叉树——二叉树链式结构实现
  • 数学基础 -- 线性代数之矩阵的逆
  • [译] 怎样写一个基础的编译器
  • 【5+】跨webview多页面 触发事件(二)
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • October CMS - 快速入门 9 Images And Galleries
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • Quartz初级教程
  • supervisor 永不挂掉的进程 安装以及使用
  • Vim 折腾记
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 高度不固定时垂直居中
  • 聊聊redis的数据结构的应用
  • 入门到放弃node系列之Hello Word篇
  • 使用agvtool更改app version/build
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 手写双向链表LinkedList的几个常用功能
  • 责任链模式的两种实现
  • 第二十章:异步和文件I/O.(二十三)
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ‌‌雅诗兰黛、‌‌兰蔻等美妆大品牌的营销策略是什么?
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #职场发展#其他
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (42)STM32——LCD显示屏实验笔记
  • (C#)一个最简单的链表类
  • (C语言)字符分类函数
  • (js)循环条件满足时终止循环
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (十八)SpringBoot之发送QQ邮件
  • (十八)三元表达式和列表解析
  • (游戏设计草稿) 《外卖员模拟器》 (3D 科幻 角色扮演 开放世界 AI VR)
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • **PHP二维数组遍历时同时赋值
  • ..回顾17,展望18
  • .Net - 类的介绍
  • .NET BackgroundWorker
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录