STL的map 虽然可以自动按键值升序对元素进行排序,但是在按顺序访问元素时,必须依赖迭代器,而map,set等不是随机存取的迭代器并不支持算术运算,这给程序设计带来诸多不便,所以多利用自己建的哈希表,会带来很多便利。
1.利用vector<pair<type,type>>来建立哈希表:
//万能头文件,包含了c++所有的头文件
#include <bits/stdc++.h>
int main(){
vector<pair<int,int>>m1;
//sort默认使用pair的第一个值来进行升序排序
sort(m1.begin(),m1.end());
//通过使用lambda来时哈希表按pair的第二个值升序排序
sort(m1.begin(),m1.end(),[](pair<int,int>a,pair<int,int>b){return a.second<b.second;})
}
2.自己建立的哈希表可以使用stl中的upper_bound和lower_bound来完成map类似的操作
ForwardIter lower_bound(ForwardIter first, ForwardIter last,const _Tp& val)算法返回一个非递减序列[first, last)中的第一个大于等于值val的位置。
ForwardIter upper_bound(ForwardIter first, ForwardIter last, const _Tp& val)算法返回一个非递减序列[first, last)中的第一个大于值val的位置