//头文件
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iterator>
#include<sstream>
#include<string>
#include<queue>
#include<vector>
#include<map>
#include<set>

using namespace std;

//string常用
void String()
{
	string str;
	str.substr(下标, 长度);//复制
	str.resize(长度, 填充);//重新设置大小
	str.empty();//检查是否为空,空则返回true
	str.size();//获取字符串大小
	str.find(起点下标,目标字符或字符串);//返回第一个下标,没有找到则返回string::npos
	str.insert(位置, 字符或字符串);//插入字符或字符串
}

//map常用
void Map_()
{
	map<typedef, typedef>Map;
	Map.erase(key);//删除key的元素
	Map.count(元素);//如果有该元素则返回1,没有则返回0,没有则返回map.end()
	Map.find(元素);//返回该元素下标,没有则返回map.end()
	iter->first;//代表key
	iter->second;//代表元素
}

//vector常用
void Vector_()
{
	vector<int>num;
	num.push_back();//添加到尾部
	num.erase(num.begin() + i, num.end() - j);//删除区域[i,j-1];
	num.insert(num.begin() + 2, 1);//在迭代器中第二个元素前插入新元素  
	num.clear();//清空
}

//queue常用
void queue_()
{
	queue<int>num;
	num.push();//添加到队尾
	num.pop();//弹出队头
	num.front();//返回队头元素
	num.back();//返回队尾元素
	num.empty();////检查是否为空,空则返回true
}

//Set常用
void Set()
{
	set<int>num;
	num.upper_bound();//返回大于某个值元素的迭代器
	num.lower_bound();// 返回指向大于(或等于)某值的第一个元素的迭代器
	num.insert();// 在集合中插入元素
	num.find();// 返回一个指向被查找到元素的迭代器
}

void Daily()
{
	abs();//整数求绝对值
	fabs();//浮点数求绝对值

	reverse(num.begin(), num.end());//反转字符串或者数组
	vector<int>::iterator iter = num.begin();//迭代器

	//字符串转换和串流的反复利用
	int num;
	string str;
	stringstream ss;
	ss << str;
	ss >> num;
	ss.str("");
	ss.clear();
}