c++ STL 容器——联合容器
STL提供了四种联合容器 set,multiset,map,multimap;
set and multiset在<set>头文件
map and multimap在<map>头文件
模板函数都一样的http://www.cnblogs.com/jinmingyi/p/6798359.html
set/map中迭代器不能++或--,因为不是连续的序列,是树。
set:
在set中,值就是关键字,集合中不会有多个相同的关键字,且始终按从小到大的顺序排列
可反转可排序,关键字是唯一的,只能存储同一个类型的值
#include<iostream>
#include<set>
using namespace std;
void update(set<int>&s,set<int>::iterator it,int i)
{
int x = *it; //使x保存当前迭代器指向的数值
x += i; //x更改为需要的数值
s.erase(*it); //删除set中迭代器指向的数值*it
s.insert(x); //将新的x插入set
}
int main()
{
set<int>s; //声明一个set
for (int i = ; i < ; i++)
{
s.insert(i); //向set中插入数值
}
set<int>::iterator it;
int i;
if (s.find() == s.end())
cout << "no 2" << endl;
else
cout << "yes" << endl;
for (i=,it = s.begin(); it != s.end(); i++)
{
update(s,it, i); //不能对set中已有的数值操作 自己写个更新函数
it = s.find(i);
}
}
map:
map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的
声明一个map: map<下标的类型,对应数据的类型>name;
#include<map>
#include<iostream>
#include<string>
using namespace std;
int main()
{
map<string, int>mp; //声明一个map
mp["abc"] = ; //向map中添加一个数据
map<string, int>::iterator it;//声明一个迭代器
it = mp.find("aaa");//find函数返回一个迭代器,找到返回对应迭代器,否则返回end()
if (it == mp.end())
cout << "no" << endl;
}
还有这两个都可以用lowet_bound() (大于等于的第一个)和upper_bound() (绝对大于的第一个,双写p!) 返回的都是迭代器。
写博中发现一个细节:迭代器it对应的元素被删掉了,就不能在it++或it--;
如果
c++ STL 容器——联合容器的更多相关文章
- C++ STL之list容器的基本操作
由于list和vector同属于序列式容器,有很多相同的地方,而上一篇中已经写了vector,所以这一篇着重写list和vector的不同之处和特有之处. 特别注意的地方: (1)STL中迭代器容器中 ...
- ###STL学习--关联容器
点击查看Evernote原文. #@author: gr #@date: 2014-08-23 #@email: forgerui@gmail.com STL中的关联容器. ###stl学习 |--迭 ...
- stl中的容器、迭代器和算法----vector中的find实现
来源 http://blog.csdn.net/huangyimin/article/details/6133650 stl包括容器.迭代器和算法: 容器 用于管理一些相关的数据类型.每种容器都有它的 ...
- 带你深入理解STL之Vector容器
C++内置了数组的类型,在使用数组的时候,必须指定数组的长度,一旦配置了就不能改变了,通常我们的做法是:尽量配置一个大的空间,以免不够用,这样做的缺点是比较浪费空间,预估空间不当会引起很多不便. ST ...
- STL中的容器介绍
STL中的容器主要包括序列容器.关联容器.无序关联容器等. 一]序列容器 (1) vector vector 是数组的一种类表示,提供自动管理内存的功能,除非其他类型容器有更好满足程序的要求,否则,我 ...
- STL序列式容器学习总结
STL序列式容器学习总结 参考资料:<STL源码剖析> 参考网址: Vector: http://www.cnblogs.com/zhonghuasong/p/5975979.html L ...
- STL——关联式容器
一.关联式容器 标准的STL关联式容器分为set(集合)/map(映射表)两大类,以及这两大类的衍生体multiset(多键集合)和 multimap(多键映射表).这些容器的底层机制均以RB-tre ...
- STL——序列式容器
一.容器概述与分类 1. STL容器即是将运用最广的一些数据结构实现出来.常用的数据结构有array, list, tree, stack, queue, hash table, set, map…… ...
- STL标准库-容器适配器
技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性 上一节介绍了仿函数适配器,这节主要介绍容器适配器和迭代器适配器的概念,其实容器适配器和迭代器其适配器就是封装了一些其他class ...
随机推荐
- Python入门(2)
一. 基础语法 1.Print print 是 python 里很基本很常见的一个操作,它的操作对象是一个字符串. 直接在 print 后面加一段文字来输出的话,需要给文字加上双引号或者单引号. ...
- iOS 转场动画探究(一)
什么是转场动画: 转场动画说的直接点就是你常见的界面跳转的时候看到的动画效果,我们比较常见的就是控制器之间的Push和Pop,还有Present和Dismiss的时候设置一下系统给我们的modalTr ...
- linux下安装apache最常见的报错解决
报错如下: Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, ...
- Swift连接字符串和字符
字符串和字符的值可以通过加法运算符 (+) 相加在一起并创建一个新的字符串值: let string1 = "hello" let string2 = " there&q ...
- pdf文件之itextpdf操作实例
需求分析 1.需要创建一个pdf文件,包含文件的基本属性 2.文件需要包含附件,通过点击链接直接打开 3.生成的pdf文件不能直接修改(需要输入密码) 4.pdf文件需要有文字或图片水印 准备jar包 ...
- Unity 游戏框架搭建 (五) 简易消息机制
什么是消息机制? 23333333,让我先笑一会. 为什么用消息机制? 三个字,解!!!!耦!!!!合!!!!. 我的框架中的消息机制用例: 1.接收者 ``` using UnityEngine ...
- javascript闭包的妙用——实现函数的重载
最近在看John Resig 与 Bear Bibeault的<JavaScript 忍者秘籍>.这本书处处提现了js的魔法(从我这个写强类型语言的人看来).js能够点石成金,处处体现着它 ...
- 配置tomcat的远程调试
参考文档: http://jingyan.baidu.com/article/0320e2c1f4ef6b1b87507b06.html http://flyer2010.iteye.com/blog ...
- VPN断开后断网脚本
有时在实际中需要,不能暴露自己的真实IP,不得不使用VPN,但是VPN的稳定性及易受网络环境影响,在VPN的暂时掉线之后,会暴露自己的真实IP,此时通过脚本操作路由表让VPN断线之后,电脑失去网络访问 ...
- oracle默认用户名及密码
oracle默认用户名及密码(网摘) (1)user: internal password :oracle (2)user: s ...