stl-map/set
C++中map容器提供一个键值对(key/value)容器,map与multimap差别仅仅在于multiple允许一个键对应多个值。需要包含头文件map。对于迭代器来说,可以修改实值,而不能修改key。Map会根据key自动排序。升序排序
//1.定义和初始化map<int,string> map1; //空map//2.常用操作方法map1[3] = "Saniya"; //添加元素map1.insert(map<int,string>::value_type(2,"Diyabi"));//插入元素//map1.insert(pair<int,string>(1,"Siqinsini"));map1.insert(make_pair<int,string>(4,"V5"));string str = map1[3]; //根据key取得value,key不能修改map<int,string>::iterator iter_map = map1.begin();//取得迭代器首地址int key = iter_map->first; //取得ekystring value = iter_map->second; //取得valuemap1.erase(iter_map); //删除迭代器数据map1.erase(3); //根据key删除valuemap1.size(); //元素个数map1.empty(); //判断空map1.clear(); //清空所有元素//3.遍历for(map<int,string>::iterator iter = map1.begin();iter!=map1.end();iter++){int keyk = iter->first;string valuev = iter->second;}
map的基本操作函数:
C++ Maps是一种关联式容器,包含“关键字/值”对
begin() 返回指向map头部的迭代器
clear() 删除所有元素
count() 返回指定元素出现的次数
empty() 如果map为空则返回true
end() 返回指向map末尾的迭代器
equal_range() 返回特殊条目的迭代器对
erase() 删除一个元素
find() 查找一个元素
get_allocator() 返回map的配置器
insert() 插入元素
key_comp() 返回比较元素key的函数
lower_bound() 返回键值>=给定元素的第一个位置
max_size() 返回可以容纳的最大元素个数
rbegin() 返回一个指向map尾部的逆向迭代器
rend() 返回一个指向map头部的逆向迭代器
size() 返回map中元素的个数
swap() 交换两个map
upper_bound() 返回键值>给定元素的第一个位置
value_comp() 返回比较元素value的函数
set
set的含义是集合,它是一个有序的容器,里面的元素都是排序好的,支持插入,删除,查找等操作,就像一个集合一样。所有的操作的都是严格在logn时间之内完成,效率非常高。set和multiset的区别是:set插入的元素不能相同,但是multiset可以相同。Set默认自动排序。
常用操作:
1.元素插入:insert()
2.中序遍历:类似vector遍历(用迭代器)
3.反向遍历:利用反向迭代器reverse_iterator。
例:
set<int> s;
......
set<int>::reverse_iterator rit;
for(rit=s.rbegin();rit!=s.rend();rit++)
4.元素删除:与插入一样,可以高效的删除,并自动调整使红黑树平衡。
set<int> s;
s.erase(2); //删除键值为2的元素
s.clear();
5.元素检索:find(),若找到,返回该键值迭代器的位置,否则,返回最后一个元素后面一个位置。
set<int> s;
set<int>::iterator it;
it=s.find(5); //查找键值为5的元素
if(it!=s.end()) //找到
cout<<*it<<endl;
else //未找到
cout<<"未找到";
6.自定义比较函数
(1)元素不是结构体:
例:
//自定义比较函数myComp,重载“()”操作符
struct myComp
{
bool operator()(const your_type &a,const your_type &b)
[
return a.data-b.data>0;
}
}
set<int,myComp>s;
......
set<int,myComp>::iterator it;
(2)如果元素是结构体,可以直接将比较函数写在结构体内。
例:
struct Info
{
string name;
float score;
//重载“<”操作符,自定义排序规则
bool operator < (const Info &a) const
{
//按score从大到小排列
return a.score<score;
}
}
set<Info> s;
......
set<Info>::iterator it;
stl-map/set相关推荐
- C++ 笔记(24)— STL map 类(map实例化、插入、查找、删除)
1. STL 映射类简介 map 和 multimap 是键-值对容器,支持根据键进行查找,区别在于,后者能够存储重复的键,而前者只能存储唯一的键. 为了实现快速查找, STL map 和 multi ...
- STL map 简介
STL map 简介 转载于:http://www.cnblogs.com/TianFang/archive/2006/12/30/607859.html 1.目录 map简介 map的功能 使用ma ...
- 结构体作为STL map的key时需要注意什么? (某公司招聘面试试题)已跪~~~~(_)~~~~
某公司招聘的面试环节, 有这样一个题目:结构体作为STL map的key时需要注意什么? 对于懂STL map的同学来说, 这个题目还是比较easy的, 先看程序: #include <iost ...
- Dictionary,hashtable, stl:map有什么异同?
Dictionary,hashtable, stl:map有什么异同? 相同点:字典和map都是泛型,而hashtable不是泛型. 不同点:三者算法都不相同 Hashtable,看名字能想到,它是采 ...
- C++ STL map的使用
C++ STL map的使用 2009-12-11 作者:tanker1024 来源:tanker1024的blog 1.map简介 map是一类关联式容器.它的特点是增加和删除节点对迭代器的 ...
- 学习STL map, STL set之数据结构基础
STL map和set的使用虽不复杂,但也有一些不易理解的地方,如: 或许有得人能回答出来大概原因,但要彻底明白,还需要了解STL的底层数据结构. C++ STL 之所以得到广泛的赞誉,也被很多人使用 ...
- STL map与Boost unordered_map - 有何不可的日志 - 网易博客
STL map与Boost unordered_map - 有何不可的日志 - 网易博客 STL map与Boost unordered_map 2012-03-30 16:06:26| 分类: c ...
- STL map 内存改变,迭代器失效,_Isnil(_Ptr)和红黑树
STL map 内存改变,迭代器失效,_Isnil(_Ptr)和红黑树 最近在做项目时发现一个crash的问题,当时得到的dmp文件显示crash在一个以map为循环变量的循环中,crash位置在如下 ...
- stl::map之const函数访问
如何在const成员数中访问stl::map呢?例如如下代码: string ConfigFileManager::MapQueryItem(const string& name) const ...
- STL map使用
map属于c++STL中的一种,是有不能重复的关键字和与之相关的值组成(若键值重复,则这个键值所对应的值为最后一次所赋给的值): #include <string.h> #include ...
最新文章
- 译 | 缓存穿透问题导致Facebook史上最严重事故之一
- vue2.0 通过ip访问自己运行的项目
- EfficientPS:目前排名第一的高效高精度全景分割算法
- 外媒:Airbnb为2020年直接上市作准备
- sql server 约束
- 大学课程很少有教怎么设计单片机开发板,进阶板更不用说
- Rayman的绝顶之路——Leetcode每日一题打卡15
- 2020高中计算机会考成绩查询,2020年高中会考成绩查询入口
- 上古卷轴5 Papyrus的LOG日志分析,科学解决ctd,bug的方法
- 初学原生ajax(1):原生AJAX的简单介绍与使用
- 人工智能-语音交互-NLP自然语言(三) 语法-敲黑板
- 利用python对b站某GPT-4解说视频的近万条弹幕进行爬取、数据挖掘、数据分析、弹幕数量预测及情绪分类
- vue控制滚动条滑到某个位置
- .Net 常用的ORM框架
- 2000-XP-2003操作系统常见问题
- qpython3:安卓上运行Python
- 二、神奇的自然常数e之“自然”之力
- 使用c语言实现的fifo程序,C语言实现标准FIFO
- 古月ROS入门21讲学习笔记
- js添加多marker 高德地图_高德地图点聚合--Marker多点聚合及多个marker点击事件