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 

原文地址:https://www.cnblogs.com/USTC-ZCC/p/15175194.html