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的更多相关文章

  1. STL 中的map 与 hash_map的理解

    可以参考侯捷编著的<STL源码剖析> STL 中的map 与 hash_map的理解 1.STL的map底层是用红黑树存储的,查找时间复杂度是log(n)级别: 2.STL的hash_ma ...

  2. STL中的map和unordered_map

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

  3. STL中关于map和set的四个问题?

    STL map和set的使用虽不复杂,但也有一些不易理解的地方,如: 为何map和set的插入删除效率比用其他序列容器高? 或许有得人能回答出来大概原因,但要彻底明白,还需要了解STL的底层数据结构. ...

  4. C++ STL中的map用红黑树实现,搜索效率是O(lgN),为什么不像python一样用散列表从而获得常数级搜索效率呢?

    C++ STL中的标准规定: map, 有序 unordered_map,无序,这个就是用散列表实现 谈谈hashmap和map的区别,我们知道hashmap是平均O(1),map是平均O(lnN)的 ...

  5. STL中的map、unordered_map、hash_map

    转自https://blog.csdn.net/liumou111/article/details/49252645 在之前使用STL时,经常混淆的几个数据结构,特别是做Leetcode的题目时,对于 ...

  6. STL中的map和hash_map

    以下全部copy于:http://blog.chinaunix.net/uid-26548237-id-3800125.html 在网上看到有关STL中hash_map的文章,以及一些其他关于STL ...

  7. stl中的map数据类型

    1.1 STL map 1.1.1 背景 关联容器使用键(key)来存储访问读取元素,而顺序容器则通过元素在容器中的位置存储和访问元素. 常见的顺序容器有:vector.list.deque.stac ...

  8. STL中的map/multimap小结

    (1)使用map/multimap之前必须包含头文件<map>:#include<map> 并且和所有的关联式容器一样,map/multimap通常以平衡二叉树来完成 (2)n ...

  9. stl中的map经验

    如果想使用一个map临时变量装载参数map,不需要使用new创建一个对象. 声明一个变量,直接赋值就可以.map内部自己重载了=操作符,会自己分配内存.

随机推荐

  1. Oracle Schema Objects——Synonyms

    Oracle Schema Objects 同义词 同义词 = 表的别名. 现在假如说有一张数据表的名称是“USER1.student”,而现在又为这张数据表起了一个“USER1”的名字,以后就可以直 ...

  2. Spring - Bean Definition Bean定义 给容易提供元数据的3方法

    Spring Bean Definition https://www.tutorialspoint.com/spring/spring_bean_definition.htm The objects ...

  3. linux 的nohup & 和daemon 总结(转)

    add by zhj:守护进程貌似跟nohup + &方式启动的进程差不多.都可以实现与终端的无关联.   原文:http://blog.csdn.net/lovemdx/article/de ...

  4. SQL Server分区键列必须是主键一部分

    SQL Server分区键列必须是主键一部分. 必须把分区列包含在主键/唯一约束/唯一索引的键列中. USE tempdb GO -- 测试表 CREATE TABLE dbo.tb( id int, ...

  5. Tdrag

    Tdrag属于拖拽类的一款插件,基于jquery而成,兼容1.4以上版本的jquery,兼容浏览器:chrome.firfox.IE7等以上主流浏览器 插件加载 <script type=&qu ...

  6. oracle 死锁查询及处理

    SELECT    bs.username "Blocking User", bs.username "DB User",          ws.userna ...

  7. Nodepad++ 资料整理

    http://www.crifan.com/files/doc/docbook/rec_soft_npp/release/webhelp/use_sbracket_lite_autocomplete_ ...

  8. SLG手游Java服务器的设计与开发——网络通信

    文章版权归腾讯GAD所有,禁止匿名转载:禁止商业使用:禁止个人使用. 一.前言 上文分析了我们这款SLG的架构,本章着重讲解我们的网络通信架构,由上文的功能分析我们可以得知,游戏的所有功能基本上属于非 ...

  9. C++中定义NULL的头文件

    NULL不是C语言基本类型,其定义在stddef.h文件中,作为最基本的语言依赖宏存在.但是随着C/C++的发展,很多文件只要涉及了系统或者标准操作都会将NULL作为标准宏声明或者包含.所以几乎包含任 ...

  10. springcloud15---zuul-fallback

    package com.itmuch.cloud; import org.springframework.boot.SpringApplication; import org.springframew ...