C++函数与STL
一、万能头
#include<bits/stdc++.h>
using namespace std;
#define int long long //万一题目卡数值范围
signed main()
{
return 0;
}
二、常用函数
1、排序函数
正序:
sort(a, a + n);
逆序:
先sort(a, a + n);
再reverse(a, a + n); //n是你要排序的元素的末尾位置
2、字符串
(1)得到字符串长度
string s = "abcdef";
int m = s.length();
(2)截取字符串一部分字符
string s = "12345678";
s = s.substr(2,3); //开始截取的位置,要截取的长度
//输出:“345”
3、最大公约数
int a = 6, b = 8;
int c = __gcd(a, b); //注意是两个底杠
4、取最大最小值函数
利用max(),min();
int a = 4, b = 6;
int c = max(a, b);
三、STL
(1)队列
//创建
queue<int>q;
//入队
q.push(5);
//得到对头元素
int a = q.front();
//出队
q.pop();
//判断是否为空
bool flag = q.empty();
//得到尺寸
int a = q.size();
(2)栈
stack<int>s;
s.empty() //判断栈是否为空。如果栈为空,返回 true,否则返回 false。
s.size() //返回栈中实际的元素个数。
s.push(e) //将元素e压入栈顶。
s.top() //访问栈顶元素。
s.pop() //移除栈顶元素。
(3)优先队列
priority_queue<int> q;//初始化,默认为大顶堆,即从大到小排序
priority_queue<int, vector<int>, greater<int> > q;//小顶堆,即从小到大排序
top()//访问队首元素(优先级最高的那个元素)
pop()://弹出优先级最高的元素
push()://塞元素进队列
empty() //是否空和
size()://元素个数
四、数字提取+进制转换
(1)将字符转成数字
char ch = '7';
int x = ch - '0';
#include<bits/stdc++.h>
using namespace std;
#define int long long //万一题目卡数值范围
signed main()
{
string s;
cin >> s;
int x = 0;
int n = s.length();
for(int i = 0; i < n; i ++)
{
if(s[i] >= '0' && s[i] <= '7')
{
int ch = s[i] - '0'; //将字符转成数字
x = x * 10 + ch;
}
}
cout << x << '\n';
//将八进制转成十进制
int num = 0; //最终要得到的十进制
int pos = 0; //位数
while(x)
{
int a = x % 10;
x /= 10;
num = num + (a *pow(8, pos));
pos ++;
// cout << num << '\n';
}
cout << num;
return 0;
}
提取数字的方法和上边一样,主要看的是十进制转换成十六进制