ACM模版——STL篇
STL篇
//===========================================\\
| 栈 include<stack> |
\\===========================================//
stack<type> s // 定义
pop() // 弹出栈顶元素
push(x) // x入栈
size() // 返回栈中的元素个数
top() // 返回栈顶元素
empty() // 判断栈是否空,空则返回true
//===========================================\\
| 队 include<queue> |
\\===========================================//
queue<type> s // 定义
pop() // 弹出队列的第一个元素
push(x) // x入队
size() // 返回队中的元素个数
front() // 返回队列的第一个元素
back() // 返回队列的最后一个元素
empty() // 判断队是否空,空则返回true
//===========================================\\
| 集合 include<set> |
\\===========================================//
set<int> s;
s.insert(x); // 插入元素
s.erase(x); // 删除元素,可删除一定范围元素
s.clear(); // 清空集合
l=s.size(); // 返回集合元素个数
bool flag=s.empty(); // 判断集合是否空
set<int>::iterator it; // 迭代器
it=s.find(x); // 返回x的迭代器位置
for (it=s.begin(); it!=s.end(); it++)
printf("%d\n",*it); // 正向遍历
set<int>::reverse_iterator rit; // 反向迭代器
for (rit=s.rbegin(); rit!=s.rend(); rit++)
printf("%d\n",*rit); // 反向遍历
struct cmp // 比较函数1
{
bool operator()(const int &a,const int &b)
{
return a>b; // 降序
}
};
set<int,cmp> s1;
struct info // 比较函数2
{
int x,y;
bool operator<(const info &b) const
{
return x>b.x; // 按x降序
}
};
set<info> s2;
//===========================================\\
| 映射 include<map> |
\\===========================================//
1、 定义
map<string,int> m1;
map<int,char> m2;
2、 添加数据
// 关键字存在时,不做任何操作
m1.insert(pair<string,int>("hehe",102));
m1.insert(pair<string,int>("hehe",10));
// 直接修改关键字对应的值
m1["hehe"]=333;
3、 迭代器
map<string,int>::iterator it;
m1.begin() // m1.end()
it->first // 返回key知
it->second // 返回映射值
map<string,int>::reverse_iterator rit;
m1.rbegin() // m1.rend()
4、 其他操作函数
m1.find("hehe") // 返回key值的迭代器位置
m1.erase("hehe") // 删除key值的映射
m1.empty() // 判断map是否空
浙公网安备 33010602011771号