STL之map UVa156

 1 #include <iostream>
 2 #include <cstring>
 3 #include <cstdio>
 4 #include <algorithm>
 5 #include <vector>
 6 #include <map>
 7 
 8 using namespace std;
 9 
10 map<string,int> arr;
11 vector<string> word;
12 
13 string change(string str)
14 {
15     string ans=str;
16     for(int i=0;i<str.length();i++)
17     {
18         ans[i]=tolower(ans[i]);
19     }
20     sort(ans.begin(),ans.end());
21     return ans;
22 }
23 
24 int main()
25 {
26     string str,str1;
27     while(cin>>str)
28     {
29         if(str[0]=='#')
30             break;
31         str1=change(str);
32         word.push_back(str);
33         if(!arr.count(str1))
34             arr[str1]=0;
35         arr[str1]++;
36     }
37     vector<string> ans;
38     for(int i=0;i<word.size();i++)
39     {
40         if(arr[change(word[i])]==1)
41            ans.push_back(word[i]);
42     }
43     sort(ans.begin(),ans.end());
44     for(int i=0;i<ans.size();i++)
45         cout<<ans[i]<<endl;
46     return 0;
47 }
View Code

map

map类似于一个高级数组,下表类型可自行定义,类似于定义一个映射关系,也称“关联数组”

可用函数

count;  //看是否有这个下表,有,则返回1,没有则返回0

find(n);  //看是否有n这个下标,如果没有,则返回值等于map.end();

 

multimap

multimap与map的区别在于第一个元素是否可重复

对于multimap来说,find(n)会返回下标为n的第一个元素的指针

posted @ 2015-08-03 16:27  相儒以沫  阅读(156)  评论(0编辑  收藏  举报