Map基本用法
Map的基本用法
map内部使用的是红黑树,在map内部所有的数据都是有序的
map插入有三种方法:
insert(pair<int,string>(i,str));
myMap.insert(map<int,string>::value_type(i,str));
myMap[2] = "a";
map遍历也有三种方法
迭代器
数组
反向迭代器
map删除数据使用erase函数,可以:
用关键字某个元素
迭代器删除某个元素
迭代器删除某片元素
map查找有三个元素
find
Lower_bound
Upper_bound
实例代码详解
#include "stdafx.h"
#include <map>
#include <string>
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
map<int,string>myMap;
string str;
//******************************************************************
for (int i = 0; i < 4;i++)
{
cin>>str;
//map插入有三种方式
//下面两种插入方式基本等同
//map的关键字是唯一的,重复的话插入会失败
//myMap.insert(pair<int,string>(i,str));
//myMap.insert(map<int,string>::value_type(i,str));
//检测插入失败的方法
//下面pair的第一个变量返回的是map的迭代器(即你插入的map值),第二个是如果插入成功就是true,否则为false
pair<map<int,string>::iterator,bool> insert_pair;
insert_pair = myMap.insert(pair<int,string>(i,str));
if (insert_pair.second == true)
{
cout<<insert_pair.first->first<<endl;
}
//还有一种就是数组方式插入,此时如果插入重复的话,后面的值会覆盖前面的
//cout<<"\n用数组的方式插入第一个map元素的重复值覆盖"<<endl;
myMap[0] = "a";
myMap[0] = "b";
}
//******************************************************************
//map的遍历
//迭代器遍历
map<int,string>::iterator iter;
cout<<"\n迭代器遍历\n"<<endl;
for (iter = myMap.begin();iter != myMap.end();iter++)
{
cout<<iter->first<<" : "<<iter->second<<endl;
}
//方向迭代器遍历
map<int,string>::reverse_iterator rev_iter;
cout<<"\n反向迭代器遍历\n"<<endl;
for (rev_iter = myMap.rbegin();rev_iter != myMap.rend();rev_iter++)
{
cout<<rev_iter->first<<" : "<<rev_iter->second<<endl;
}
//用数组的方式遍历下标还是从0开始的
//输出的直接是map的值而不是关键字,全部输出要用上述方法
int nSize = myMap.size();
for (int i = 0;i < nSize;i++)
{
cout<<myMap[i]<<endl;
}
//******************************************************************
//map中三种查找数据的方法
//1.find函数找到后会返回该关键字的迭代器,否则等于end函数返回的迭代器
cout<<"\n使用find查找索引号为2的关键字\n";
iter = myMap.find(2); //find的参数时map的关键字而不是值
cout<<iter->first<<" : "<<iter->second<<endl;
//2.使用count函数只能确定某个数据在不在map中,在的话返回1,否则0
cout<<myMap.count(2)<<endl;
//第三种方法是
//Lower_bound函数用法,这个函数用来返回要查找关键字的下界(是一个迭代器)
//Upper_bound函数用法,这个函数用来返回要查找关键字的上界(是一个迭代器)
//此处略去
//******************************************************************
//数据的删除
//需要用到erase函数
//用迭代器删除
myMap.erase(iter);//此时iter指向上面找到的2关键字的元素
//也可以直接用关键字删除
myMap.erase(2);
//用迭代器成片删除
myMap.erase(myMap.begin(),myMap.end());
getchar();
getchar();
return 0;
}
// STLTest.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <map>
#include <string>
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
map<int,string>myMap;
string str;
//******************************************************************
for (int i = 0; i < 4;i++)
{
cin>>str;
//map插入有三种方式
//下面两种插入方式基本等同
//map的关键字是唯一的,重复的话插入会失败
//myMap.insert(pair<int,string>(i,str));
//myMap.insert(map<int,string>::value_type(i,str));
//检测插入失败的方法
//下面pair的第一个变量返回的是map的迭代器(即你插入的map值),第二个是如果插入成功就是true,否则为false
pair<map<int,string>::iterator,bool> insert_pair;
insert_pair = myMap.insert(pair<int,string>(i,str));
if (insert_pair.second == true)
{
cout<<insert_pair.first->first<<endl;
}
//还有一种就是数组方式插入,此时如果插入重复的话,后面的值会覆盖前面的
//cout<<"\n用数组的方式插入第一个map元素的重复值覆盖"<<endl;
myMap[0] = "a";
myMap[0] = "b";
}
//******************************************************************
//map的遍历
//迭代器遍历
map<int,string>::iterator iter;
cout<<"\n迭代器遍历\n"<<endl;
for (iter = myMap.begin();iter != myMap.end();iter++)
{
cout<<iter->first<<" : "<<iter->second<<endl;
}
//方向迭代器遍历
map<int,string>::reverse_iterator rev_iter;
cout<<"\n反向迭代器遍历\n"<<endl;
for (rev_iter = myMap.rbegin();rev_iter != myMap.rend();rev_iter++)
{
cout<<rev_iter->first<<" : "<<rev_iter->second<<endl;
}
//用数组的方式遍历下标还是从0开始的
//输出的直接是map的值而不是关键字,全部输出要用上述方法
int nSize = myMap.size();
for (int i = 0;i < nSize;i++)
{
cout<<myMap[i]<<endl;
}
//******************************************************************
//map中三种查找数据的方法
//1.find函数找到后会返回该关键字的迭代器,否则等于end函数返回的迭代器
cout<<"\n使用find查找索引号为2的关键字\n";
iter = myMap.find(2); //find的参数时map的关键字而不是值
cout<<iter->first<<" : "<<iter->second<<endl;
//2.使用count函数只能确定某个数据在不在map中,在的话返回1,否则0
cout<<myMap.count(2)<<endl;
//第三种方法是
//Lower_bound函数用法,这个函数用来返回要查找关键字的下界(是一个迭代器)
//Upper_bound函数用法,这个函数用来返回要查找关键字的上界(是一个迭代器)
//此处略去
//******************************************************************
//数据的删除
//需要用到erase函数
//用迭代器删除
myMap.erase(iter);//此时iter指向上面找到的2关键字的元素
//也可以直接用关键字删除
myMap.erase(2);
//用迭代器成片删除
myMap.erase(myMap.begin(),myMap.end());
getchar();
getchar();
return 0;
}

Map基本用法的更多相关文章
- c++map的用法 分类: POJ 2015-06-19 18:36 11人阅读 评论(0) 收藏
c++map的用法 分类: 资料 2012-11-14 21:26 10573人阅读 评论(0) 收藏 举报 最全的c++map的用法 此文是复制来的0.0 1. map最基本的构造函数: map&l ...
- STL中map的用法
map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候 ...
- C++11中map的用法
最全的c++map的用法 1. map最基本的构造函数:map<string ,int>mapstring; map<int,string >mapint;map<sri ...
- entrySet用法 以及遍历map的用法
entrySet用法 以及遍历map的用法 keySet是键的集合,Set里面的类型即key的类型entrySet是 键-值 对的集合,Set里面的类型是Map.Entry 1.keySet( ...
- python map 常见用法
python map 常见用法2017年02月01日 19:32:41 淇怪君 阅读数:548版权声明:欢迎转载,转载请注明出处 https://blog.csdn.net/Tifficial/art ...
- 8 map的用法
what's map go里面的map和python字典差不多. 类似其他语言中的哈希表或者字典,以key-value的形式存储的数据 key必须是支持==或者!=比较运算的类型,不可以是函数.map ...
- forEach、for+i、map的用法及区别
array.forEach(callback[, thisObject]); 下面是参数的详细信息: 1. callback : 函数测试数组的每个元素. 2.thisObject : 对象作为该 ...
- set/multiset和map/multimap用法小结
二叉搜索树是ACM中经常需要用到的数据结构,熟练掌握map和set的用法很关键,现对其做一个简单的总结. 主要的功能有:插入元素,查找元素,删除,遍历/反向遍历. 插入,删除和查找操作的时间都和树的高 ...
- STL 之 map的用法
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候 ...
- js数组中foEach和map的用法详解 jq中的$.each和$.map
数组中foEach和map的用法详解 相同点: 1.都是循环遍历数组(仅仅是数组)中的每一项. 2.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项value, ...
随机推荐
- debug连线指令
-當發現原本正常的連線突然斷線的,請用底下的指令debug 1.ifconfig (看看IPaddress) 2.wpa_clira stat (看看連線狀態) 3.如果是在連線中(wp ...
- html+css布局小练习w3cfuns
虽然花了很长时间,但是也知道了不少,这次也不像以前了,不知道怎么下手,虽然是照着图片做,不过也做出来了图片来自w3cfuns:网站图片url 看了w3cfuns的两天驾驭DIV+CSS 这个网站对新 ...
- php 之 类,对象(三)多态性,函数重载,克隆
一.三大特性之三 多态性(在php中表象不明显)1.概念:当父类引用指向子类实例时,由于子类对父类函数进行了重写,导致我们在使用该引用去调用相应的方法显示出的不同.2.发生条件:1.必须有继承 2. ...
- Webpack: 为Web开发而生的模块管理器[转]
Webpack: 为Web开发而生的模块管理器 原文地址:http://hanjianwei.com/2014/09/10/webpack-package-manager-for-web/ 10 Se ...
- 怎样使用pyinstaller打包
安装好pyinstaller后 cd 到pyinstaller.py目录,在命令行输入:python pyinstaller.py 参数 主文件所在目录 如:python pyinstaller.py ...
- JavaWeb学习笔记--4.EL表达式
四. 表达式语言(相当于对JSP中对象输出的简化,功能实质上类似) 转自ZHSJUN的博客 http://blog.csdn.net/zhsjun/article/details/2254546 表达 ...
- 磁珠(FB)的选用
1. 磁珠(FB)的单位是欧姆,而不是亨特,这一点要特别注意.因为磁珠的单位是按照它在某一频率 产生的阻抗来标称的,阻抗的单位也是欧姆.磁珠的 DATASHEET上一般会提供频率和阻抗的特性曲线图,一 ...
- 奇葩的SQL*Net more data from client等待,导致批处理巨慢
<pre name="code" class="sql"><pre name="code" class="sql ...
- Linux企业级项目实践之网络爬虫(21)——扩展为多任务爬虫
高效的网络爬虫是搜索引擎的重要基础.采用多任务并发执行,实现类似于CPU的流水线(pipeline)运行方式,可极大地提高网络和计算资源的利用率等性能. #include "threads. ...
- jQuery获取select option
jQuery的一些方法理出一些常用的方法: //获取第一个option的值 $('#test option:first').val(); //最后一个option的值 $('#test option: ...