度娘知道一切:点击打开链接
map主要思想是一对一映射,可以int,double,long long,string 等相互映射
1.有迭代器的用法,可操作一一对应的两个数
begin
语法: iterator begin(); |
begin()函数返回一个迭代器指向map的第一个元素。
while(cin>>N&&N)
{
map<string,int>m1;
map<string,int>::iterator it;
//定义迭代器(不用管这到底是个什么),主要是begin()等函数的返回值是iterator,见上图
while(N--)
{
cin>>str1;
m1[str1]++;
}
n=0;
for(it=m1.begin();it!=m1.end();++it)
{
if(it->second>n)
{
n=it->second;
str1=it->first;
}
}
cout<<str1<<endl;
2.暴力搜索,即:把每一项拆分,再用map查找
num=0;
while(cin>>str[num])
m1[str[num++]]=1;
for(i=0;i<num;i++)
{
len=str[i].length();
for(j=1;j<len;j++)
{
string str1(str[i],0,j);
string str2(str[i],j,len);
if(m1[str1]>0&&m1[str2]>0)
{cout<<str[i]<<endl;break;}
}
}
3.找出连续排列,如:hdu 1800