C++常用函数
1. string转int类型
采用标准库cstdlib中atoi函数,<cstdlib>是C++里面的一个常用函数库
#include<cstdlib>
string str = "55";
int tmp = std::atoi(str.c_str());
2.内置类型转string
比如:int 转 string
int tmp = 55;
cout << std::to_string(tmp);
3.判断字母/数字:#include<cctype>
(1)isalpha() : 用来判断一个字符是否为字母,如果是字母则返回非零,否则返回零
(2)isalnum() : 用来判断一个字符是否为数字或者字母
(3)isdigit() : 用来判断一个字符是否为数字
(4)islower():用来判断一个字符是否为小写字母
(5)isupper():用来判断一个字符是否为大写字母
(6)tolower():把字符串都转化为小写字母
(7)toupper():把字符串都转化为大写字母
4.STL通用算法函数 #include<algorithm>
(1) 反转元素的次序 reverse() : 会将区间[begin, end)内的元素全部逆序
string str("hello");
// 反转h后面的元素变成holle
reverse(str.begin()+1, str.end());
(2)以很好的平均效率排序sort() : 是一种根据实际数据智能选择排序算法的函数,sort()会将区间[beg,end)内的元素排序,默认升序
bool cmp (int a, int b)
{
return a > b; // 降序排列
}
int array[5] = {1, 2, 3, 4, 5};
sort (array, array + 4, cmp); //通过自定义cmp函数将其改为降序排列
输出: 4 3 2 1 5
(3)string类型总结:#include<string>
1.插入操作
str.insert(pos, s) //在下标pos处插入字符串s
2.删除操作
(1)删除单个元素 str.erase(iter) //删除迭代器iter指定的元素
(2)删除区间元素
1⃣️str.erase(first_iter, last_iter) //删除迭代器[first_iter, last_iter) 之间元素
2⃣️str.erase(pos, length) //删除下标pos开始长度为length的区间元素
3.截取字符串
string newstr = str.substr(pos, length) //截取下标pos开撕长度为length的子串
4.查找元素
(1)str.find(str2) //如果str2是str的子串,返回首次出现的位置,否则返回string::npos
(2)str.find(str2, pos) //从pos位置开始查找
拓展: rfind():从后往前找
(4)queue队列总结:#include<queue>
queue<int> a; //申明一个空队列
a.empty() //如果为空则返回1,不为空返回0
a.size() //队列元素个数
a.front() //指向队首元素的引用
a.back() //指向队尾元素的引用
a.push(t) //队尾插入元素
a.pop() //删除队首元素
priority_queue:和queue
不同的就在于我们可以自定义其中数据的优先级, 让优先级高的排在队列前面,优先出队
//降序队列(大顶堆)默认
priority_queue<int, vector<int>, less<int> > q;
=>priority_queue<int> q;
//升序队列(小顶堆)
priority_queue<int, vector<int>, greater<int> > q;
基本操作:
1.top 访问队头元素
2.empty 队列是否为空
3.size 返回队列内元素个数
4.push 插入元素到队尾 (并排序)
5.emplace 原地构造一个元素并插入队列
6.pop 弹出队头元素
7.swap 交换内容
(5)stack 栈总结 :#include<stack>
stack<int> a;
a.empty() //栈为空返回true
a.size() //栈中元素数目
a.top() //返回指向栈顶元素的引用
a.push(t) //在栈顶插入元素x
a.pop() //删除栈顶元素
(6)set 集合总结:#include<set>
【1】储存同一类型的数据元素(这点和vector、queue等其他容器相同);
【2】每个元素的值都唯一(没有重复的元素);
【3】根据元素的值自动排列大小(有序性);
【4】无法直接修改元素;
【5】高效的插入删除操作;
set<int> a; //申明
a.begin() //返回指向第一个元素的迭代器
a.end() //返回指向超尾的迭代器
a.clear() //清空a
a.empty() //判断a是否为空
a.size() //返回a中元素个数
a.count(x) 返回a中元素x的个数
a.insert(x) //插入元素
a.erase(x) //删除值为x的元素
a.erase(iterator) //删除迭代器指向的元素
a.erase(first, second) //删除区间内的元素,左闭右开
(7)字典map/unordered_map总结
map的底层实现是RB-Tree(红黑树),因此会根据键值自动进行排序,默认是字典序。而unordered_map的底层实现是哈希。因此,如果只是单纯的用来创建某种映射关系的话,推荐unordered_map,效率会高一些。
map是一种key-value型容器,其中key是关键字,起到索引作用,而value就是其对应的值。与set不同的是它支持下标访问。
map<string, int> m; //申明一个key为string, value为int的字典
参考博客:https://blog.csdn.net/fantacy10000/article/details/95974634?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.base&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.base