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使用小结的更多相关文章

  1. map 与 unordered_map

    两者效率对比: #include <iostream> #include <string> #include <map> #include <unordere ...

  2. map和unordered_map的差别和使用

    map和unordered_map的差别还不知道或者搞不清unordered_map和map是什么的,请见:http://blog.csdn.net/billcyj/article/details/7 ...

  3. 【转】Map 与 Unordered_map

    map和unordered_map的差别和使用 map和unordered_map的差别还不知道或者搞不清unordered_map和map是什么的,请见:http://blog.csdn.net/b ...

  4. C++ map与unordered_map

    map与unordered_map对比 map unordered_map 红黑树(非严格二叉平衡搜索树)实现 哈希表实现 有序 无序 -- 查找时间复杂度为O(1),非常快 空间消耗较大 空间消耗较 ...

  5. STL中的map和unordered_map

    STL中的map和unordered_map map 头文件:#include 原理:std::map的内部实现了一颗红黑树,有对其键值进行排序的功能,所以map是一个有序的容器,map中的每一个元素 ...

  6. C++中map和unordered_map的用法

    1. 简介 map和unordered_map都是c++中可以充当字典(key-value)来用的数据类型,但是其基本实现是不一样的. 2. map 对于map的底层原理,是通过红黑树(一种非严格意义 ...

  7. 原 c++中map与unordered_map的区别

    c++中map与unordered_map的区别 头文件 map: #include < map > unordered_map: #include < unordered_map ...

  8. 关于c++ STL map 和 unordered_map 的效率的对比测试

    本文采用在随机读取和插入的情况下测试map和unordered_map的效率 笔者的电脑是台渣机,现给出配置信息 处理器 : Intel Pentium(R) CPU G850 @ 2.90GHz × ...

  9. Map 与 unordered_map 横向与纵向测试,附带原始数据与测试程序

    写程序时,面临用Map还是unordered_map,总是很纠结,于是写了个程序进行测试 Map 与 unordered_map 横向与纵向测试,附带原始数据与测试程序 简单数据(4 Byte) 首先 ...

随机推荐

  1. Sql 语法整理

    Query 1 SELECT 和 SELECT * 语句 SELECT LastName,FirstName FROM Persons 2 SELECT DISTINCT 语句 SELECT DIST ...

  2. leetcode-160场周赛-5238-找出给定方程的正整数解

    题目描述: class Solution: def findSolution(self, customfunction: 'CustomFunction', z: int) -> List[Li ...

  3. Redis中存储对象区别

    1.最常用的是String结构,key和value都是字符串类型: 2.哈希:比较是用于对对象的操作: 3.List:按照插入数据顺序保存,value是可以重复的,底层是双向链表: 4.集合:是Str ...

  4. 记Selenium HTMLTestRunner 无法生成测试报告的总结

      使用Python ,HTMLTestRunner 生成测试报告时,遇到很奇怪的问题,明明运行的结果,没有任何报错,就是不生成测试报告,纠结好久.google+baidu搜索结果也不满意,最后终于解 ...

  5. C++——函数及调用

    1.函数调用:实参初始化形参:控制权交给被调函数 2.函数返回(return语句):返回return中的值:控制权交回主函数 3.参数传递   传值 传引用 传指针 初始值 不变,拷贝给形参 可变,形 ...

  6. 结合Intel Manual和libdasm学习汇编指令

    参考:http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html h ...

  7. PAT_A1081#Rational Sum

    Source: PAT A1081 Rational Sum (20 分) Description: Given N rational numbers in the form numerator/de ...

  8. shell txt1写入txt2,并放在txt2中指定字符串的后面

    # 先找到指定字符串aaa的行号 row=`grep -w -n "aaa" txt2 | cut -d ":" -f 1` # 将txt1中内容写入txt2中 ...

  9. 一些识别CMS的经验方法总结

    今天学到了一些识别CMS的快速方法,也算是一种信息收集经验的积累,在这里要感谢一下我的同事“gakki的童养夫”对我的大力支持. 如何判断网站的CMS? robots.txt文件 robots.txt ...

  10. 序列化之 TLV

    目录 序列化之 TLV 1. 紧凑模式 2. 可扩展性 3. 更好的可扩展性 4. 自解释性 5. 跨语言特性 6. 代码自动化:IDL语言 7. 总结 序列化之 TLV 通信协议可以理解两个节点之间 ...