#include <iostream>
#include <map>
using namespace std; // map构造函数
// map<T1, T2> mapTT;//map 默认构造函数:
// map(const map &mp);//拷贝构造函数 // map 赋值操作
// map& operator=(const map &mp);//重载等号操作符
// swap(mp);//交换两个集合容器
//
// map 大小操作
// size();//返回容器中元素的数目
// empty();//判断容器是否为空
//
// map 插入数据元素操作
// map.insert(...); //往容器插入元素,返回 pair<iterator,bool>
// map<int, string> mapStu;
// // 第一种 通过 pair 的方式插入对象
// mapStu.insert(pair<int, string>(3, "小张"));
// // 第二种 通过 pair 的方式插入对象
// mapStu.inset(make_pair(-1, "校长"));
// // 第三种 通过 value_type 的方式插入对象
// mapStu.insert(map<int, string>::value_type(1, "小李"));
// // 第四种 通过数组的方式插入值
// mapStu[3] = "小刘";
// mapStu[5] = "小王"; // map 删除操作
// clear();//删除所有元素
// erase(pos);//删除 pos 迭代器所指的元素,返回下一个元素的迭代器。
// erase(beg, end);//删除区间[beg,end)的所有元素 ,返回下一个元素的迭代器。
// erase(keyElem);//删除容器中 key 为 keyElem 的对组。
//
// map 查找操作
// find(key);//查找键 key 是否存在,若存在,返回该键的元素的迭代器;/若不存在,返回 map.end();
// count(keyElem);//返回容器中 key 为 keyElem 的对组个数。对 map 来说,要么是 0,要么是 1。对
// multimap 来说,值可能大于 1。
// lower_bound(keyElem);//返回第一个 key<=keyElem 元素的迭代器。
// upper_bound(keyElem);//返回第一个 key>keyElem 元素的迭代器。
// equal_range(keyElem);//返回容器中 key 与 keyElem 相等的上下限的两个迭代器。 void printMap(map<int, int>& myMap)
{
for (map<int, int>::iterator it = myMap.begin(); it != myMap.end(); it++)
{
cout << "key = " << (*it).first << " " << "value = " << (*it).second << endl;
}
cout << "---------------------" << endl;
} // map容器初始化
void test01()
{
// map容器模版参数,第一个参数key的类型,第二个参数value类型
map<int,int> mymap;
// 插入数据 pair.first key值 pair.second value值
// 第一种插入方式
pair<map<int, int>::iterator, bool> ret = mymap.insert(pair<int, int>(, ));
if (ret.second)
{
cout << "第一次插入成功!" << endl;
}
else
{
cout << "第一次插入失败!" << endl;
}
ret = mymap.insert(pair<int, int>(, ));
if (ret.second)
{
cout << "第一次插入成功!" << endl;
}
else
{
cout << "第一次插入失败!" << endl;
}
// 第二种插入方式
mymap.insert(make_pair(, ));
// 第三种插入方式
mymap.insert(map<int, int>::value_type(, ));
// 第四种插入方式
// 如果发现key不存在,创建pair插入到map容器中,如果发现key存在,那么会修改key对应的value
mymap[] = ;
printMap(mymap);
mymap[] = ;
printMap(mymap);
mymap[] = ;
printMap(mymap);
//如果通过[]方式去访问map中一个不存在key,那么map会将这个访问的key插入到map中,并且给value一个默认值
cout << "mymap[60] = " << mymap[] << endl;
printMap(mymap);
} // 自定义数据类型排序
class MyKey
{
public:
MyKey(int index, int id)
{
this->mIndex = index;
this->mID = id;
}
public:
int mIndex;
int mID;
}; struct Mycompare
{
bool operator()(MyKey key1, MyKey key2)
{
return key1.mIndex > key2.mIndex;
}
}; void test02()
{
map<MyKey, int, Mycompare> mymap;
mymap.insert(make_pair(MyKey(, ), ));
mymap.insert(make_pair(MyKey(, ), ));
for (map<MyKey, int, Mycompare>::iterator it = mymap.begin(); it != mymap.end(); it++)
{
cout << it->first.mIndex << ":" << it->first.mID << "=" << it->second << endl;
}
cout << "---------------------" << endl;
} // equal_range
void test03()
{
map<int, int> mymap;
mymap.insert(make_pair(, ));
mymap.insert(make_pair(, ));
mymap.insert(make_pair(, ));
pair<map<int, int>::iterator, map<int, int>::iterator> ret = mymap.equal_range();
if (ret.first != mymap.end())
{
cout << "找到lower_bound" << endl;
}
else
{
cout << "没有找到!" << endl;
}
if (ret.second != mymap.end())
{
cout << "找到upper_bound" << endl;
}
else
{
cout << "没有找到" << endl;
}
} int main()
{
test01();
test02();
test03();
getchar();
return ;
}

C++ STL 之 map的更多相关文章

  1. C++ STL中Map的按Key排序和按Value排序

    map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value.假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区 分),我们用map来进 ...

  2. STL中map与hash_map的比较

    1. map : C++的STL中map是使用树来做查找算法; 时间复杂度:O(log2N) 2. hash_map : 使用hash表来排列配对,hash表是使用关键字来计算表位置; 时间复杂度:O ...

  3. STL中map,set的基本用法示例

    本文主要是使用了STL中德map和set两个容器,使用了它们本身的一些功能函数(包括迭代器),介绍了它们的基本使用方式,是一个使用熟悉的过程. map的基本使用: #include "std ...

  4. STL中map与hash_map容器的选择收藏

    这篇文章来自我今天碰到的一个问题,一个朋友问我使用map和hash_map的效率问题,虽然我也了解一些,但是我不敢直接告诉朋友,因为我怕我说错了,通过我查询一些帖子,我这里做一个总结!内容分别来自al ...

  5. C++ STL中Map的相关排序操作:按Key排序和按Value排序 - 编程小径 - 博客频道 - CSDN.NET

    C++ STL中Map的相关排序操作:按Key排序和按Value排序 - 编程小径 - 博客频道 - CSDN.NET C++ STL中Map的相关排序操作:按Key排序和按Value排序 分类: C ...

  6. STL之map排序

    描述 STL的map中存储了字符串以及对应出现的次数,请分别根据字符串顺序从小到大排序和出现次数从小到大排序. 部分代码已经给出,请补充完整,提交时请勿包含已经给出的代码. int main() { ...

  7. C++中的STL中map用法详解(转)

    原文地址: https://www.cnblogs.com/fnlingnzb-learner/p/5833051.html C++中的STL中map用法详解   Map是STL的一个关联容器,它提供 ...

  8. C++ STL中Map的按Key排序跟按Value排序

    C++ STL中Map的按Key排序和按Value排序 map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value.假如存储学生和其成绩(假定 ...

  9. [STL] Implement "map", "set"

    练习热身 Ref: STL中map的数据结构 C++ STL中标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成为RB树(Re ...

  10. stl中map的四种插入方法总结

    stl中map的四种插入方法总结方法一:pair例:map<int, string> mp;mp.insert(pair<int,string>(1,"aaaaa&q ...

随机推荐

  1. ubuntu tensorflow cpu faster-rcnn train data

    (flappbird) luo@luo-All-Series:~/MyFile/tf-faster-rcnn_box$ (flappbird) luo@luo-All-Series:~/MyFile/ ...

  2. Qt编写安防视频监控系统5-视频回放

    一.前言 一般视频回放都会采用GB28181国标来处理,这样可以保证兼容国内各大厂家的NVR,毕竟在同一的国家标准下,大家都会统一支持国标的,就不需要根据各个厂家的SDK来做兼容处理,烦得很,厂家越来 ...

  3. Hadoop常用命令介绍

    本文主要介绍 Hadoop 常用的命令. test命令 用于检测文件或目录是否存在,判断文件或目录大小. -test -[defsz] <path> : Answer various qu ...

  4. 【Web】利用jquery实现百度新闻导航菜单滑动动画

    前言 前两天,群里有人问百度新闻导航是如何实现的,当时由于忙于工作,没有来得及细看,恰好今天有空闲时间,索性就实现一下这个效果吧: 思路与步骤 1.利用UL创建简单横向导航: <!DOCTYPE ...

  5. 记录一下自己安装Appium的流程

    跟着其他大佬的安装攻略,一步一步来的.过程中遇到了一些问题,也都解决了~ 需要准备的东西: 1.JDK1.8 2.Andriod SDK 3.Node.js 4.Python 5.Appium-pyt ...

  6. Java工程师学习指南第3部分:Spring与SpringMVC源码解析

    本文整理了微信公众号[Java技术江湖]发表和转载过的Spring全家桶优质文章,想看到更多Java技术文章,就赶紧关注吧. 前后端分离,我怎么就选择了 Spring Boot + Vue 技术栈? ...

  7. JavaScript 检测值

    了解常见的真值和假值,可以增强判断能力.在使用if判断时,提升编码速度. 了解常见的检测和存在,一样可以增强判断能力,而且是必须掌握的. 数组和对象被视为真值 1 2 3 4 5 6 7 8 9 10 ...

  8. 深入理解java:5. Java分布式架构

    什么是分布式架构 分布式系统(distributed system)是建立在网络之上的软件系统. 内聚性是指每一个数据库分布节点高度自治,有本地的数据库管理系统. 透明性是指每一个数据库分布节点对用户 ...

  9. Python Requests库 form-data 上传文件操作

    请求数据示例: ------WebKitFormBoundaryKLoWgrA4O40MayHM Content-Disposition: form-data; name="id" ...

  10. 初识gRPC

    一.gRPC的概念 gRPC是Google推出的一个开源高性能的轻量级RPC框架,可以在任何环境中运行.它可以有效地连接数据中心内和跨数据中心的服务,并提供可插拔的支持,以实现负载平衡,跟踪,健康检查 ...