map和unordered_map使用小结
map和unordered_map
unordered_map简介:
#include <cstdio>
#include <iostream>
#include <unordered_map>//两个头文件都行
//#include <tr1/unordered_map>
using namespace std;
int main(int argc, char const *argv[]){
unordered_map<int,int>mp;//创建 printf("%d\n", mp[]);//默认为0,注意:此时mp里已有一个元素的key是100,value是0 mp[]=;//简单赋值
mp[]=; mp.erase();//两种erase方法 printf("key: 12 -> value: %d\n", mp[]); mp[]=; unordered_map<int,int>::iterator it;//迭代器
it = mp.find();
if(it!=mp.end())printf("YES, it's %d\n", *it);
else printf("NO!\n"); mp.erase(it); printf("key:\n");
for(auto x: mp){//访问key
printf("%d\n", x);
} printf("value:\n");
for(auto x: mp){//访问value
printf("%d\n", x.second);
} return ;
}
/*
0
key: 12 -> value: 0
YES, it's 5
key:
12
100
value:
101
0
请按任意键继续. . .
*/
map简介
map是一类关联式容器,增加和删除节点对迭代器的影响很小。除了对操作节点有影响,对其他的节点没有什么影响。map主要建立了key到value的映射。key和value可以是任意类型。
注意:对于迭代器来说,可以修改实值,而不能修改key。
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的函数
map添加数据:
map<int,int>mp; 未插入数据时,值默认为0: if(mp[100]==0)cout<<"hello!\n"; map<int ,string> mp; mp.insert(pair<int,string>(1,"hello")); mp.insert(map<int,string>::value_type(w,"world"));
mp[3]="haha";
map元素的查找:
find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。
map<int ,string >::iterator it;
it=maplive.find(110);
if(it==maplive.end())cout<<"Do not find 110!\n";
else cout<<"Find 112!\n";
map的swap的用法:
map中的swap不是一个容器中的元素交换,而是两个容器交换;
map的sort问题:
map中的元素是自动按key升序排序,所以不能对map用sort函数:
类似的还有set和unordered_map。对了,别忘了multiset和multimap这俩东西。
set的数据操作
::begin() //迭代器
::end() //迭代器
::clear() //删除set容器中的所有的元素
::empty() //判断set容器是否为空
::max_size() //返回set容器可能包含的元素最大个数
::size() //返回当前set容器中的元素个数
::rbegin //逆迭代器
::rend() //逆迭代器
map和unordered_map使用小结的更多相关文章
- map 与 unordered_map
两者效率对比: #include <iostream> #include <string> #include <map> #include <unordere ...
- map和unordered_map的差别和使用
map和unordered_map的差别还不知道或者搞不清unordered_map和map是什么的,请见:http://blog.csdn.net/billcyj/article/details/7 ...
- 【转】Map 与 Unordered_map
map和unordered_map的差别和使用 map和unordered_map的差别还不知道或者搞不清unordered_map和map是什么的,请见:http://blog.csdn.net/b ...
- C++ map与unordered_map
map与unordered_map对比 map unordered_map 红黑树(非严格二叉平衡搜索树)实现 哈希表实现 有序 无序 -- 查找时间复杂度为O(1),非常快 空间消耗较大 空间消耗较 ...
- STL中的map和unordered_map
STL中的map和unordered_map map 头文件:#include 原理:std::map的内部实现了一颗红黑树,有对其键值进行排序的功能,所以map是一个有序的容器,map中的每一个元素 ...
- C++中map和unordered_map的用法
1. 简介 map和unordered_map都是c++中可以充当字典(key-value)来用的数据类型,但是其基本实现是不一样的. 2. map 对于map的底层原理,是通过红黑树(一种非严格意义 ...
- 原 c++中map与unordered_map的区别
c++中map与unordered_map的区别 头文件 map: #include < map > unordered_map: #include < unordered_map ...
- 关于c++ STL map 和 unordered_map 的效率的对比测试
本文采用在随机读取和插入的情况下测试map和unordered_map的效率 笔者的电脑是台渣机,现给出配置信息 处理器 : Intel Pentium(R) CPU G850 @ 2.90GHz × ...
- Map 与 unordered_map 横向与纵向测试,附带原始数据与测试程序
写程序时,面临用Map还是unordered_map,总是很纠结,于是写了个程序进行测试 Map 与 unordered_map 横向与纵向测试,附带原始数据与测试程序 简单数据(4 Byte) 首先 ...
随机推荐
- Sql 语法整理
Query 1 SELECT 和 SELECT * 语句 SELECT LastName,FirstName FROM Persons 2 SELECT DISTINCT 语句 SELECT DIST ...
- leetcode-160场周赛-5238-找出给定方程的正整数解
题目描述: class Solution: def findSolution(self, customfunction: 'CustomFunction', z: int) -> List[Li ...
- Redis中存储对象区别
1.最常用的是String结构,key和value都是字符串类型: 2.哈希:比较是用于对对象的操作: 3.List:按照插入数据顺序保存,value是可以重复的,底层是双向链表: 4.集合:是Str ...
- 记Selenium HTMLTestRunner 无法生成测试报告的总结
使用Python ,HTMLTestRunner 生成测试报告时,遇到很奇怪的问题,明明运行的结果,没有任何报错,就是不生成测试报告,纠结好久.google+baidu搜索结果也不满意,最后终于解 ...
- C++——函数及调用
1.函数调用:实参初始化形参:控制权交给被调函数 2.函数返回(return语句):返回return中的值:控制权交回主函数 3.参数传递 传值 传引用 传指针 初始值 不变,拷贝给形参 可变,形 ...
- 结合Intel Manual和libdasm学习汇编指令
参考:http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html h ...
- PAT_A1081#Rational Sum
Source: PAT A1081 Rational Sum (20 分) Description: Given N rational numbers in the form numerator/de ...
- shell txt1写入txt2,并放在txt2中指定字符串的后面
# 先找到指定字符串aaa的行号 row=`grep -w -n "aaa" txt2 | cut -d ":" -f 1` # 将txt1中内容写入txt2中 ...
- 一些识别CMS的经验方法总结
今天学到了一些识别CMS的快速方法,也算是一种信息收集经验的积累,在这里要感谢一下我的同事“gakki的童养夫”对我的大力支持. 如何判断网站的CMS? robots.txt文件 robots.txt ...
- 序列化之 TLV
目录 序列化之 TLV 1. 紧凑模式 2. 可扩展性 3. 更好的可扩展性 4. 自解释性 5. 跨语言特性 6. 代码自动化:IDL语言 7. 总结 序列化之 TLV 通信协议可以理解两个节点之间 ...