C++标准模板库【Standard Template Library , STL】
1.vector的常见用法
vector常用函数
vector<int> v;
vector<typename>::iterator it;//vector可通过下标、迭代器(类似于指针)来访问
v.push_back(x); //新增一个元素x到vector末尾
v.pop_back(); //取出vector末尾的元素
int cnt = size(); //vector中的元素个数
v.clear(); //清空vector
v.insert(*it,x); //将x插入到*it处
v.erase(*it); //删除*it单个元素
v.erase(*left,*right);
//删除[left,right)这个区间中的元素 2.set的常见用法
set【集合】内部自动有序且不含重复元素的容器
set常用函数
set<int> s;
set<typename>::iterator it;//set只能通过迭代器来访问
s.insert(); //将x插入到set容器,并自动递增排序和去重
s.size(); //获得元素个数
s.find(value); //返回set中对应值为value的迭代器
s.erase(); //删除单个元素、一个区间内的所有元素
s.clear(); //清空set
set_intersection(s1.begin(),s1.end(),s2.begin(),s2.end(),back_intersection); //求交集 3.string的常见用法
string str = "123";
int a1 = stoi(str); //string型直接转成int型
int a2 = atoi(str.c_str()); //先把str转换成char*,转换成int*
str1 += str2; //将str2直接拼接到str1上
== 、 != 、< 、<= 、> 、>= 比较大小,规则字典序
str.length() //返回长度
str.size() //返回长度
str.substr(pos,len) //返回从pos位未开始、长度位len的子串 4.map的常见用法
map<string,int> m; //根据姓名查询分数
//fisrt为key,second为value
m.size();
m.erase();
m.find();
m.clear();
//按照下标输出,根据first来查找second
//按照迭代器访问
map<string,int>::iterator it;
for(it = m.begin();it != m.end(); it++)
{
cout << it->first << " " << it->second << endl;
}
//for-each输出
for(auto i : m)
{
cout << i.first << " " << i.second << endl;
} 5.queue的常见用法 --- 广度优先搜索
queue【队列】 先进先出
//queue<typename> q; typename:任意基本数据类型或容器
queue<int> q;
int x = 6;
q.push(x); //将x推入queue的队尾中
q.pop(); //(无返回值)取出队首元素
q.front(); //获取队首元素
q.back(); //获取队尾元素
q.empty(); //判断队列是否为空
//在front()和pop()前必须用empty()判断队列是否为空,否则可能因为队空而出现错误
//queue里没有clear(),必须得手动清空
while(!q.empty())
{
q.pop();
}
q.size(); //返回queue内元素的个数 6.priority_queue的常见用法
priority_queue【优先队列】
队首元素一定是当前队列中优先级最高的那一个
priority_queue<int> pq; //默认降序排列(大的在队首)
priority_queue<int,vector<int>,greater<int>()> pq2; //升序的优先队列
int x;
pq.push(x); //将x推入优先队列
//priority_queue不像queue一样有front(),back()
//使用top()前必须用empty()判断优先队列是否为空
pq.top(); //只能通过top()来访问队首元素
pq.pop(); //将队首元素取出
pq.empty();
pq.size(); 7.stack的常见用法
stack【栈】 后进先出
stack<int> st; //栈,先进后出
st.size();
int x = 6;
st.push(x); //将x放入栈顶
st.pop();
st.top();
st.empty(); 8.pair的常见用法
pair:想将两个元素绑在一起作为一个合成元素、又不想因此定义结构体,就可用pair
struct pair{
typename first;
typename second;
};
等价于:pair<typeName1,typeName2> name;
p.first //pair中的元素访问
可用 == 、 != 、< 、<= 、> 、>= 比较大小,先以first的大小为标准,只用当first相等时才去判别second的大小

京公网安备 11010502036488号