alt 本题如果采用数组的方式存储 会超时 原因是数组存储没办法做到只遍历已有数据 所以 要使用map

map相关知识点

定义map:

map<Key,T> yourmap;

  1. Key为关键词 别名first T为值 别名second
  2. Key和T的定义类型为任意 例如map <int,int> mp; map <string,char> mp; 甚至可以使用结构体来当做键和值的类型
  3. 每个key在map中只能出现一次
  4. unordermap与map的用法相同 map为有序 unordermap是无序的

功能1 插入

insert()

例:map<int,string>student;

  1. student.insert(pair<int,string>('1','mingzi');
  2. student.insert(map<int,string>::value_type('1','mingzi'));
  3. student[6]='mingzi';//类似数组直接赋值

功能2 查找

find()

返回迭代器指向查找的元素 找不到返回map::end() 位置(NULL)

功能3 遍历

for(auto[x,y]:mp)  //遍历每个xy 
map<int,int>::iterator it;
for(it=mp.begin();it!=mpend;it++){  //迭代器遍历
	cout<<it->first<<"-"<<it->second<<endl;
    }

其他功能 增删改查

  1. empty(): 返回容器是否为空.
  2. size(): 返回容器内元素个数.
  3. erase():删除某个元素
  4. clear:删除所有元素
  • 简单记录 以后见到类似的题还会补充
  • 如有错误 感谢指正
  • 更详细可以看oiwiki