STL中的map
map 容器 提供 1 对 1 的关系
定义方式:
map<string,int>mp;
写在前面的是关键字。
数据插入:
1.使用 insert 插入 pair 数据
mp.insert(pair<string,int>("sb",));
2.用value_type进行插入
mp.insert(map<string,int>::value_type("sb",));
3.直接插入
mp["sb"] = ;
注意的是1,2两种插入方法,必须插入关键字不同的mp对,而方法三可以直接对关键字对应的信息覆盖。
常用函数:
mp.size();
sort(mp.begin,mp.end); //用迭代器排序
mp.clear(); //清空
mp.empty(); // 是否为空
查找函数:
pair mappair = mp.equal_range("sb");
if(mappair.first == mappair.second)
cout << "no find" << endl;
mappair.first 等同于lower_bound , second 等同于upper_bound。
数据删除函数:
int n = mp.erase("sb"); //删除成功返回 1 否则返回 0
讲的再多不如例题理解的透彻——hdu6015
题目大意是找出逃课值最大的方案
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int inf = 0x3f3f3f3f;
const int moder = 1e9 + ;
const int MAXN=; struct node
{
char s[];
int val; }; bool cmp(const node &a, const node &b)
{
return a.val > b.val;
} int main()
{
int t;
cin >> t;
map<string,int>mp;
while(t--)
{
int n;
cin >> n;
mp.clear(); //此处每次都一定要清空
node NODE[n];
for(int i=;i < n;i++)
cin >> NODE[i].s >> NODE[i].val; sort(NODE,NODE+n,cmp); ll sum = ;
for(int i=;i < n;i++)
{
if(mp[NODE[i].s] == ) continue;
else
{
mp[NODE[i].s]++; // 直接使用,不需要特殊的定义,map[关键字]对应的是逃课的次数
sum += NODE[i].val;
}
}
cout << sum << endl;
}
return ;
}
/*
STL中的map的更多相关文章
- STL 中的map 与 hash_map的理解
可以参考侯捷编著的<STL源码剖析> STL 中的map 与 hash_map的理解 1.STL的map底层是用红黑树存储的,查找时间复杂度是log(n)级别: 2.STL的hash_ma ...
- STL中的map和unordered_map
STL中的map和unordered_map map 头文件:#include 原理:std::map的内部实现了一颗红黑树,有对其键值进行排序的功能,所以map是一个有序的容器,map中的每一个元素 ...
- STL中关于map和set的四个问题?
STL map和set的使用虽不复杂,但也有一些不易理解的地方,如: 为何map和set的插入删除效率比用其他序列容器高? 或许有得人能回答出来大概原因,但要彻底明白,还需要了解STL的底层数据结构. ...
- C++ STL中的map用红黑树实现,搜索效率是O(lgN),为什么不像python一样用散列表从而获得常数级搜索效率呢?
C++ STL中的标准规定: map, 有序 unordered_map,无序,这个就是用散列表实现 谈谈hashmap和map的区别,我们知道hashmap是平均O(1),map是平均O(lnN)的 ...
- STL中的map、unordered_map、hash_map
转自https://blog.csdn.net/liumou111/article/details/49252645 在之前使用STL时,经常混淆的几个数据结构,特别是做Leetcode的题目时,对于 ...
- STL中的map和hash_map
以下全部copy于:http://blog.chinaunix.net/uid-26548237-id-3800125.html 在网上看到有关STL中hash_map的文章,以及一些其他关于STL ...
- stl中的map数据类型
1.1 STL map 1.1.1 背景 关联容器使用键(key)来存储访问读取元素,而顺序容器则通过元素在容器中的位置存储和访问元素. 常见的顺序容器有:vector.list.deque.stac ...
- STL中的map/multimap小结
(1)使用map/multimap之前必须包含头文件<map>:#include<map> 并且和所有的关联式容器一样,map/multimap通常以平衡二叉树来完成 (2)n ...
- stl中的map经验
如果想使用一个map临时变量装载参数map,不需要使用new创建一个对象. 声明一个变量,直接赋值就可以.map内部自己重载了=操作符,会自己分配内存.
随机推荐
- Oracle AWR之-enq: TX - allocate ITL entry
今天收到压力测试期间awr报告,测试人员要我看看数据库是否有可以优化的地方,数据库服务器配置信息:CPU:32*8,内存:480g 单实例数据库:oracle 11.2.0.4.具体分析过程如下: 可 ...
- curl 模拟GET\POST请求,以及curl post上传文件
https://blog.csdn.net/fungleo/article/details/80703365
- B - Network---UVA 315(无向图求割点)
A Telephone Line Company (TLC) is establishing a new telephone cable network. They are connectin ...
- MySQL 通用查询日志和慢查询日志分析
MySQL中的日志包括:错误日志.二进制日志.通用查询日志.慢查询日志等等.这里主要介绍下比较常用的两个功能:通用查询日志和慢查询日志. 1)通用查询日志:记录建立的客户端连接和执行的语句.2)慢查询 ...
- 大话存储4——RAID磁盘阵列
RAID是英文Redundant Array of Independent Disks(独立磁盘冗余阵列),简称磁盘阵列.下面将各个级别的RAID介绍如下. RAID0 条带化(Stripe)存储.理 ...
- android 模仿今日头条ViewPager+TabLayout
导入依赖库: compile 'com.android.support:design:25.3.1' 1.fg_content_demo2.xml <?xml version="1.0 ...
- 第六章并发编程,异步执行框架executor
异步执行框架executor是一个接口,只有一个方法.接受一个Runnable做为参数,执行任务. 将任务的执行与提交解耦. 1:executor package java.util.concurre ...
- centos7上安装php5.6
配置yum源 追加CentOS 6.5的epel及remi源. # rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/x86_64/epel- ...
- python3 备份mysql小程序
为了保证数据安全,一般都会定期备份数据库,备份数据库也有自己的命令可以执行,下面就是一个每天备份mysql数据库的一个小程序. mysql备份的命令如下: mysqldump -uroot -p123 ...
- Q_OBJECT宏的作用
The Q_OBJECT macro at the beginning of the class definition is necessary for all classes that define ...