面试可能遇到的关联式容器(map、set等)相关问题
此时解决方法如图,将p,u 置为红,将g置为黑,之后继续向上调整(g看做cur继续调整)
>2.p与u为红,g为黑

此时需要分情况进行:
>3.p为红,g与u为黑(或者无u)

p为g的左孩子,cur为p的右孩子,则针对p做左单旋转
p为g的右孩子,cur为p的左孩子(前一种对称翻转),则针对p做右单旋转
for (iter = dataMap.begin(); iter != dataMap.end();iter++){
int nKey = iter->first;
string strValue = iter->second;
if (nKey % 2 == 0){
dataMap.erase(iter);
//此时iter已经失效了,进入下一次循环++时就会报错
}
}
//这里有一个常见误区,就是map与vector的erase操作返回值是不同的
//vector中erase执行结束会返回删除元素的下一个元素的迭代器。如下
vector<int> v={1,2,3,4,5};
auto it=v.begin();
for(;it!=v.end();){
if(*it%2){
it=v.erase(it); //这一句执行完后it指向的是4,erase会自动移位
}
else it++;
}
//但是map中的erase不会自动移位,所以为了防止迭代器失效,通常使用以下两种方法编写:
//1
map<int,string> m;for (auto it = m.begin(); it != m.end();){
if (it->first % 2){
auto it1=it;
it++;
m.erase(it1);
}
else
it++;
}
//2
……
for (auto it = m.begin(); it != m.end();){
if (it->first % 2){
m.erase(it++); //使用++进行移位,此时it不会失效,因为++运算返回的是运算前的值
}
else
it++;
}

面试可能遇到的关联式容器(map、set等)相关问题的更多相关文章
- Map(关联式容器)
map是一类关联式容器,自动建立Key - Value的对应 , key 和 Value可以是任意你需要的类型.下面介绍 map 中一些常用的函数: 一.map 中的 begin 和 end 函数 m ...
- STL源码分析读书笔记--第5章--关联式容器
1.关联式容器的概念 上一篇文章讲序列式容器,序列式容器的概念与关联式容器相对,不提供按序索引.它分为set和map两大类,这两大类各自有各自的衍生体multiset和multimap,的底层机制都是 ...
- 关联式容器(associative containers)
关联式容器(associative containers) 根据数据在容器中的排列特性,容器可分为序列式(sequence)和关联式(associative)两种. 标准的STL关联式容器分为set( ...
- C++ 容器:顺序性容器、关联式容器和容器适配器
什么是容器 首先,我们必须理解一下什么是容器,在C++ 中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器.很简单,容器就是保存其它对象的对象 ...
- 7.7 C++基本关联式容器
参考:http://www.weixueyuan.net/view/6404.html 总结: 基本的关联式容器主要有:set.multiset.map和multimap,这四种容器可以分为两组:ma ...
- STL——关联式容器
一.关联式容器 标准的STL关联式容器分为set(集合)/map(映射表)两大类,以及这两大类的衍生体multiset(多键集合)和 multimap(多键映射表).这些容器的底层机制均以RB-tre ...
- STL学习笔记--关联式容器
关联式容器依据特定的排序准则,自动为其元素排序.缺省情况下以operator<进行比较.set multiset map multimap是一种非线性的树结构,具体的说是采用一种比较高效的特殊平 ...
- C++关联式容器的排序准则
stl中set和map为关联式容器,会根据排序准将元素自动排序.原型如下: template<class _Kty, class _Pr = less<_Kty>, class _A ...
- STL学习笔记(关联式容器)
Set和Multisets set和multiset会根据特定的排序准则,自动将元素排序.两者不同在于multisets允许元素重复而set不允许. 1.set和multiset的操作函数 生成.复制 ...
随机推荐
- SPSSAU数据分析思维培养系列4:数据可视化篇
本文章为SPSSAU数据分析思维培养的第4期文章. 前3期内容分别讲述数据思维,分析方法和分析思路.本文讲述如何快速使用SPSSAU进行高质量作图,以及如何选择使用正确的图形. 本文分别从五个角度进行 ...
- Nuxt.js 踩坑记录,(1)引入fs包报错
今天又是码农的一天. 但是写着写着,不知道为啥就页面就报错了, 如图所示,我在db/app.js下引入了fs这个模块,提示我npm install,我也照做了,但是仍然报错. 通过各种百度,踩坑,最终 ...
- instanceof判断问题
有时候我们根据instanceof来判断对象的数据类型 但是 用instanceof判断基本数据类型时 会不靠谱 例如 let str = '123' let str1 = new String(&q ...
- 服务应用突然宕机了?别怕,Dubbo 帮你自动搞定服务隔离!
某日中午,午睡正香的时候,接到系统的报警电话,提示生产某物理机异常宕机了,目前该物理机已恢复,需要重启上面部署的应用. 这时瞬间没有了睡意,登上堡垒机,快速重启了应用,系统恢复正常.本想着继续午睡,但 ...
- CCAI观后
暑期和大老板的学生一起学了一暑假的计算机视觉和机器学习,以前只是在京畿范围的学校听到的报告和这阵的学习数量级都不同.当时看到了很多人的报告,忽然发现了做报告应该做的准备实际还有很多. 首先是要有充分的 ...
- Apache Tika实战
Apache Tika实战 Tika 简介 Apache Tika 是一个内容分析工具包,可以检测上千种文件类型,并提取它们的元数据和文本.tika在设计上十分精巧,单一的接口使它易于使用,在搜索引擎 ...
- chromevue扩展 vue-devtools-master 谷歌vue的扩展程序
1,在百度网盘中下载压缩包,网盘地址:https://pan.baidu.com/s/1BnwWHANHNyJzG3Krpy7S8A ,密码:xm6s 2,将压缩包解压到F盘,F:\chromeVue ...
- iOS 64位静态链接库
https://www.jianshu.com/p/486e3b737707 https://stackoverflow.com/questions/44635297/setting-an-ios-s ...
- Motion Matching 资料汇总
https://www.gdcvault.com/play/1023280/Motion-Matching-and-The-Road https://twvideo01.ubm-us.net/o1/v ...
- webpack3.10.0(入门系列基本概念1)
一.概念 webpack的核心是一个用于现代JavaScript应用程序的静态模块打包程序.当webpack处理您的应用程序时,它会递归地构建一个依赖图,其中包含应用程序所需的每个模块,然后将所有这些 ...