map映射

map实例代码:

 1 // UVa156 Ananagrams
 2 // Rujia Liu
 3 // 题意:输入一些单词,找出所有满足如下条件的单词:该单词不能通过字母重排得到输入文本中的另外一个单词
 4 // 算法:把每个单词“标准化”,即全部转化为小写字母然后排序,然后放到map中进行统计
 5 #include<iostream>
 6 #include<string>
 7 #include<cctype>
 8 #include<vector>
 9 #include<map>
10 #include<algorithm>
11 using namespace std;
12
13 map<string,int> cnt;
14 vector<string> words;
15
16 // 将单词s进行“标准化”
17 string repr(string s) {
18   string ans = s;
19   for(int i = 0; i < ans.length(); i++)
20     ans[i] = tolower(ans[i]);
21   sort(ans.begin(), ans.end());
22   return ans;
23 }
24
25 int main() {
26   int n = 0;
27   string s;
28   while(cin >> s) {
29     if(s[0] == ‘#‘) break;
30     words.push_back(s);
31     string r = repr(s);
32     if(!cnt.count(r)) cnt[r] = 0;
33     cnt[r]++;
34   }
35   vector<string> ans;
36   for(int i = 0; i < words.size(); i++)
37     if(cnt[repr(words[i])] == 1) ans.push_back(words[i]);
38   sort(ans.begin(), ans.end());
39   for(int i = 0; i < ans.size(); i++)
40     cout << ans[i] << "\n";
41   return 0;
42 }

map添加数据:

1 map<int ,string> maplive;
2    maplive.insert(pair<int,string>(102,"aclive"));//法1
3    maplive.insert(map<int,string>::value_type(321,"hai"));//法2
4    maplive[112]="April";//map中最简单最常用的插入添加!

map中元素的查找:

find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。

1 map<int ,string >::iterator l_it;;
2    l_it=maplive.find(112);
3    if(l_it==maplive.end())
4                 cout<<"we do not find 112"<<endl;
5    else cout<<"wo find 112"<<endl;

map中元素的删除:

1  map<int ,string >::iterator l_it;;
2    l_it=maplive.find(112);
3    if(l_it==maplive.end())
4         cout<<"we do not find 112"<<endl;
5    else  maplive.erase(l_it);  //delete 112;

map的sort问题:
  Map中的元素是自动按key升序排序,所以不能对map用sort函数

 1  #include <map>
 2   #include <iostream>
 3   using namespace std;
 4  int main( )
 5  {
 6    map <int, int> m1;
 7    map <int, int>::iterator m1_Iter;
 8    m1.insert ( pair <int, int>  ( 1, 20 ) );
 9    m1.insert ( pair <int, int>  ( 4, 40 ) );
10    m1.insert ( pair <int, int>  ( 3, 60 ) );
11    m1.insert ( pair <int, int>  ( 2, 50 ) );
12    m1.insert ( pair <int, int>  ( 6, 40 ) );
13    m1.insert ( pair <int, int>  ( 7, 30 ) );
14    cout << "The original map m1 is:"<<endl;
15    for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ )
16       cout <<  m1_Iter->first<<" "<<m1_Iter->second<<endl;
17
18 }
19 /* 结果是
20   The original map m1 is:
21   1 20
22   2 50
23   3 60
24   4 40
25   6 40
26   7 30
27 */
28   请按任意键继续. . .
时间: 2024-11-05 18:38:47

map映射的相关文章

map——映射(message.cpp)

信息交换 (message.cpp) [题目描述] Byteland战火又起,农夫John派他的奶牛潜入敌国获取情报信息. Cow历尽千辛万苦终于将敌国的编码规则总结如下: 1 编码是由大写字母组成的字符串. 2 设定了密字.加密的过程就是把原信息的字母替换成对应密字. 3 一个字母有且仅有一个对应密字,不同字母对应不同密字. 如今,Cow终于获取了敌国发送的一条加密信息和对应的原信息.Cow如下破解密码:扫描原信息,对于原信息中的字母x,找到它在加密信息中的对应大写字母y,且认为y是x的密字.

POJ2503——Babelfish(map映射+string字符串)

Babelfish DescriptionYou have just moved from Waterloo to a big city. The people here speak an incomprehensible dialect of a foreign language. Fortunately, you have a dictionary to help you understand them.InputInput consists of up to 100,000 diction

ZOJ 3644 Kitty&#39;s Game dfs,记忆化搜索,map映射 难度:2

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4834 从点1出发,假设现在在i,点数为sta,则下一步的点数必然不能是sta的因数,所以不会形成环,只需从1直接走,走到n即可. 但是如果这样的话时空复杂度就都是nk,明显不满足题意,而这个时候我们可以想到,每个状态都必然是k的约数,(点数不是k的约数的节点不在路上,可以无视),而约数的个数也就k^0.5个,可以直接用map映射,这样时空复杂度都是n*k^0.5,可以解出答案

NHibernate3剖析:Mapping篇之集合映射基础(4):Map映射

系列引入 NHibernate3.0剖析系列分别从Configuration篇.Mapping篇.Query篇.Session策略篇.应用篇等方面全面揭示NHibernate3.0新特性和应用及其各种应用程序的集成,基于NHibernte3.0版本.如果你还不熟悉NHibernate,可以快速阅读NHibernate之旅系列文章导航系列入门,如果你已经在用NHibernate了,那么请跟上NHibernate3.0剖析系列吧. NHibernate专题:http://kb.cnblogs.com

UVA12096 - The SetStack Computer(set + map映射)

UVA12096 - The SetStack Computer(set + map映射) 题目链接 题目大意:有五个动作: push : 把一个空集合{}放到栈顶. dup : 把栈顶的集合取出来,在入栈两次. add : 出栈两次,把第一个集合作为一个元素放入第二个集合中,再将第二个集合入栈 union: 出栈两次,取这两个集合的并集,将结果入栈. intersect: 出栈两次,取这两个集合的交集,将结果入栈. 每次执行动作后还需要输出目前栈顶集合的元素个数. 解题思路:这题可以用栈和se

探讨C++中的Map映射机制

概述 从MFC到ATL,充斥着Map映射机制,似乎没有了这个Map机制,就玩不转啦.在WebBrower控件中,也存在着事件映射:在COM中,在IDispatch中也存在着自定义的函数映射. 以前,只要一谈到映射机制,总是让我闻风丧胆,退而求自保,暂且如此而已,记住就可以啦.现在想来,只要是跨不去过的坎,若没有认真面对和解决,那就永远无法逾越,成为心中永远的痛.最终,只能作茧自缚而唯唯诺诺.既然老天爷,又给了我一次机会,那我就好好抓住这次机会啦. 轰轰烈烈的开场白讲完了,让我们回归主题:"映射机

HDU 4941 Magical Forest(map映射+二分查找)杭电多校训练赛第七场1007

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4941 解题报告:给你一个n*m的矩阵,矩阵的一些方格中有水果,每个水果有一个能量值,现在有三种操作,第一种是行交换操作,就是把矩阵的两行进行交换,另一种是列交换操作,注意两种操作都要求行或列至少要有一个水果,第三种操作是查找,询问第A行B列的水果的能量值,如果查询的位置没有水果,则输出0. 因为n和m都很大,达到了2*10^9,但水果最多一共只有10^5个,我的做法是直接用结构体存了之后排序,然后m

PHP转Go系列:map映射

映射的定义 初识映射会很懵,因为在PHP中没有映射类型的定义.其实没那么复杂,任何复杂的类型在PHP中都可以用数组表示,映射也不例外. $array['name'] = '平也'; $array['sex'] = '1'; $array['age'] = '10'; //output Array ( [name] => 平也 [sex] => 1 [age] => 10 ) 映射其实就是有key有value的数组,在Go中的赋值也很类似,但需要提前声明该映射类型的键与值的类型,确保所有的

【组队赛#5】BNU 4291 Arbitrage? (floyd最短路 map映射)

[题目链接]click here~~ [题目大意]去多个国家旅游,给定国与国之间汇率的转化率,如果从起点出发最后回到起点,有收益则符合,否则不符合 [解题思路] 判一次环,用floyd计算距离最短的而且转换率最大的,map<string ,int >映射  <字符串--点> 代码 /* BNUOJ 4291 Arbitrage? Author :HRW 判一次环,用floyd计算距离最短的而且转换率最大的 map<string ,int >映射 <字符串--点&g

PAT甲题题解-1022. Digital Library (30)-map映射+vector

博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789235.html特别不喜欢那些随便转载别人的原创文章又不给出链接的所以不准偷偷复制博主的博客噢~~ 题意:给出n本书的id.名称.作者.多个关键词.出版社.出版年然后给出m个查询,每个查询包含查询的种类.对应的内容针对每个查询,让你输出所有符合的书的id,从小到大排序,没有的话则输出No Found 首先把每个book的信息都读取处理好,然后按照id排个序