
C++ STL快速使用手册
热度: loading...
整理c++常用STL,方便查询使用
map / unordered_map
map可以构造字典(key,value),底层维护的是一个红黑树。
用途:键值-映射【默认会按照键对其中的元素进行排序】
//map<type1,type2>m 例如:
map<int ,string> m;
插入元素
1.m.insert(pair<int,string>(102,"aclive"));
2.m[112]="April";//map中最简单最常用的插入添加!
常用方法:
- mp.clear() 无返回值,清空mp
- mp.count(key) 返回的是被查找键 是否存在,存在返回1
- mp.find(key) 返回的是被查找元素的位置,没有则返回map.end()
- mp.begin() 返回mp首元素的位置
- mp.end()
对map中元素进行访问的方法(需要借助迭代器):
//map<type1,type2>it 例如:
map<int ,string>::iterator it;
for(it=mp.begin();it!=mp.end();it++)
cout << it->first << it->second;
** ps: unordered_map与map类似,只是其底层维护的是一个哈希表,不会对元素进行排序 运行速度比map快,针对大数据推荐使用**
set
集合,set中每个元素的值都唯一,系统能根据元素的值自动进行排序。
底层依然是红黑树,支持高效的增删改查操作。
//声明
set<type>s
常用方法:
- s.clear()
- s.size() 获取集合大小
- s.insert(v)
- s.erase(v)
- s.find(v) 在set中查找元素v,返回一个迭代器
- s.begin()
- s.end()
对set中的元素进行访问需要利用 迭代器
栈
stack<int> mystack;
常用操作:
- s.push(a)
- s.pop()
- s.top()
- s.empty()
- s.size()
队列
常用方法:
- q.push(a)
- q.pop()
- q.size()
- q.empty()
- q.front()
- q.back()
优先队列
默认大根堆,优先级最高的元素先出队列
//以int类型举例
priority_queue<int>q
小根堆
priority_queue<int,vector<int>,greater<int>>q
自定义数据类型
struct Node{//默认优先级 a由小到大 b由大到小
int a,b;
bool operator < (const Node & rs) const {
if(a==rs.a) return b > rs.b;
return a < rs.a;
}
}
……
……
Node d[2]={{1,1},{1,2}};
sort(d,d+2);

vector
常用操作:
- v.clear()
- v.push_back(a) 末尾添加元素
- v.pop_back(a) 末尾删除元素
- v.size()
其他操作:
- v.empty()
- v.erase(v.begin()+1,v.begin()+3) 删除第1,2个元素 【左闭右开 [1,3) 】
- v.insert(v.begin()+1,5) 插入元素5在v[1]位置
- v.insert(v.begin()+1,3,5) 从v[1]位置开始插入3个5
- a.swap(b) b为向量,将a和b中元素进行整体性互换
判断条件删除vector中元素
for(vector<int>::iterator it=v.begin(); it!=v.end(); )
{
if(...)
it= v.erase(it);
else
it ++ ;
}

string
常用方法:
- s.length() / s.size() 返回字符串长度
- s.substr(pos) 从s的第pos个位置取到末尾 的子串
- s.substr(pos,len) 从s的第pos个位置取出长度为len的子串
- s.find(" ",pos ) 从s的第pos个位置开始寻找,返回查找到的位置,查找不到返回-1
翻转字符串
reverse(s.begin(),s.end())
char * 与string相互转换:
char*s1 = s.c_str(); //string转化为char*类型
string s = string(s1) //char*转化为string类型

sort函数
//对静态数组存储的基本类型元素排序
int a[N];
sort(a,a+N); //对a数组的0~N-1号元素从小到大排序
自定义优先级排序规则 (主要应用于结构体)
int cmp(int a,int b)
{
return a>b;
}
//结构体
struct people{
int num;
}
int cmp(people a,people b)
{
return a.num < b.num;
}
//调用
sort(m,m+N,cmp);

