自己构建的哈希表,使用起来比STL的map更加方便
2018-03-30 17:50
375 查看
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的位置
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的位置
相关文章推荐
- 自己写的一个SqlHelper,感觉使用起来挺方便的
- 使用回调函数,简单模拟dbutils中Queryrunner的工作原理,并重写Queryrunner,使其使用起来更加简单方便
- 利用 Composer 一步一步构建自己的 PHP 框架(四)——使用 ORM
- 面试题总结15 自己构建一个哈希表
- C++ STL基本容器的使用(vector、list、deque、map、stack、queue)
- STL map使用
- STL hash_map使用
- STL中list,vector,deque,map,set区别、联系和使用场景
- map使用方法 (STL)
- nmap使用方法--方便自己查
- STL中map的使用
- ccf+STL中map的使用..
- 使用dockerfile构建自己的镜像
- 小心使用STL中map的[]操作符
- 使用stl的hash_map
- C语言回调函数熟练---使用方法(构建程序框架方便好用)
- UVa——540Team Queue(STL练习map、queue数组的综合使用)
- 前端福利:使用Wallpaper Engine让自己的桌面炫酷起来
- 用 Composer构建自己的 PHP 框架之使用 ORM
- 如何使用STL实现自己的类