目录
vector、deque、list、set、map、unordered_set、unordered_map等。
4. 字符串函数(char型、string类、二者间的相互转换):
set:集合 可以存储不重复的元素,并且可以进行集合的交、并、差等操作。编辑
algorithm: 里包含了许多常用的算法。(…带持续更新)
引言:
以下是一些常用的C++库函数,当参加C++算法竞赛时,熟练掌握这些库函数可以帮助你更快地解决问题。
常用库函数部分
1. STL容器:vector、deque、list、set、map、unordered_set、unordered_map等。
2. STL算法:sort、lower_bound、upper_bound、binary_search、next_permutation、prev_permutation等。
3. 数学函数:abs、ceil、floor、sqrt、pow、log、exp、sin、cos、tan等。
4. 字符串函数(char型、string类、二者间的相互转换):
(char)
strlen、strcmp、strcpy、strcat、strstr、isdigit、isalpha 等。
(string): .size()、.empty()、.clear()、.append()、.insert()、.erase()、.replace()、.substr()、.find()、rfind()、.compare()、.c_str()、.stoi()、.stod()、.to_string() 等 。
5. 其他函数:
memset、memcpy、rand、time、assert、atoi、to_string()等。
常用头文件、数据结构部分
1. iostream:
用于输入和输出,包括cin和cout。
2. vector:
用于创建动态数组,可以在运行时添加或删除元素。
3. string:
用于处理字符串,包括字符串的拼接、查找、替换等。
4. queue:
用于创建队列,可以在队列的末尾添加元素,在队列的开头删除元素。
5. stack:
用于创建栈,可以在栈的顶部添加元素,在栈的顶部删除元素。
6. set:
用于创建集合,可以存储不重复的元素,并且可以进行集合的交、并、差等操作。
7. algorithm:
包含了许多常用的算法,例如排序、查找、计数等。(…待更,持续更新)
//目前本文已涉及algorithm:
1、reverse(str.begin(),str.end()) 逆置容器、数组
2、find(a,a+n,88) 查找数组中某个数据
3、upper_bound(a,a+n,3) 查找第一个大于3的数
4、lower_bound(a,a+n,7) 查找第一个小于7的数
5、fill(a,a+n,'0')
6、count(a,a+n,'0')
7、__gcd(a,b)
8、set_interesction()
9、set_union()
10、set_difference()
11、next_permutation
12、transform(str.begin(),str.end(),str.begin(),::toupper/::tolower)
13、nth_element(a,a+k,a+n)。
一、下面开始对引言提及到的关键词逐个进行简单解释:
(文章第二部分再对每个关键词进行对每个关键词的用法的说明)
1. STL容器:
- vector:
动态数组,使用push_back()添加元素,使用[]或at()访问元素,使用size()获取元素个数。
- deque:
双端队列,使用push_back()和push_front()添加元素,使用[]或at()访问元素,使用size()获取元素个数。
- list:
双向链表,使用push_back()和push_front()添加元素,使用begin()和end()访问元素,使用size()获取元素个数。
- set:
红黑树,使用insert()添加元素,使用find()查找元素,使用size()获取元素个数。
- map:
红黑树,使用insert()添加元素,使用find()查找元素,使用size()获取元素个数,使用[]访问元素。
- unordered_set:
哈希表,使用insert()添加元素,使用find()查找元素,使用size()获取元素个数。
- unordered_map:
哈希表,使用insert()添加元素,使用find()查找元素,使用size()获取元素个数,使用[]访问元素。
2. STL算法:
- sort:
排序,使用sort(begin, end)对区间进行排序。
- lower_bound:
二分查找,使用lower_bound(begin, end, value)查找第一个小于等于value的元素。
- upper_bound:
二分查找,使用upper_bound(begin, end, value)查找第一个大于value的元素。
- binary_search:
二分查找,使用binary_search(begin, end, value)查找是否存在value。
- next_permutation:
全排列,使用next_permutation(begin, end)获取下一个排列。
- prev_permutation:
全排列,使用prev_permutation(begin, end)获取上一个排列。3.
3. 数学函数:
- abs:
绝对值,使用abs(value)获取value的绝对值。
- ceil:
向上取整,使用ceil(value)获取大于等于value的最小整数。
- floor:
向下取整,使用floor(value)获取小于等于value的最大整数。
- sqrt:
平方根,使用sqrt(value)获取value的平方根。
- pow:
幂函数,使用pow(base, exponent)获取base的exponent次幂。
- log:
对数函数,使用log(value)获取以e为底的value的对数。
- exp:
指数函数,使用exp(value)获取e的value次幂。
- sin:
正弦函数,使用sin(value)获取value的正弦值。
- cos:
余弦函数,使用cos(value)获取value的余弦值。
- tan:
正切函数,使用tan(value)获取value的正切值。
4. 字符串函数:
char类型:
- strlen:字符串长度,使用strlen(str)获取str的长度。
- strcmp:字符串比较,使用strcmp(str1, str2)比较str1和str2的大小。
- strcpy:字符串复制,使用strcpy(dest, src)将src复制到dest中。
- strcat:字符串拼接,使用strcat(dest, src)将src拼接到dest的末尾。
- strstr:子串查找,使用strstr(str, substr)查找substr在str中的位置。
- isdigit:判断是否为数字,使用isdigit(ch)判断ch是否为数字。
- isalpha:判断是否为字母,使用isalpha(ch)判断ch是否为字母。
string类型:
1. size():返回字符串的长度,
例如:string str = "Hello World"; int len = str.size(); // len = 11
2. empty():判断字符串是否为空,
例如:string str = ""; bool isEmpty = str.empty(); // isEmpty = true
3. clear():清空字符串,
例如:string str = "Hello World"; str.clear(); // str = ""
4. append():在字符串末尾添加字符或字符串,
例如:string str = "Hello"; str.append(" World"); // str = "Hello World"
5. insert():在指定位置插入字符或字符串,
例如:string str = "Hello"; str.insert(2, "llo W"); // str = "Hello World"
6. erase():删除指定位置的字符或一段字符,
例如:string str = "Hello World"; str.erase(5, 6); // str = "Hello"
7. replace():替换指定位置的字符或一段字符,
例如:string str = "Hello World"; str.replace(6, 5, "C++"); // str = "Hello C++"
8. substr():截取子字符串,
例如:string str = "Hello World"; string subStr = str.substr(6, 5); // subStr = "World"
9. find():查找子字符串的位置,
例如:string str = "Hello World"; int pos = str.find("World"); // pos = 6
10. rfind():从后往前查找子字符串的位置,
例如:string str = "Hello World"; int pos = str.rfind("o"); // pos = 7
11. compare():比较两个字符串,
例如:string str1 = "Hello"; string str2 = "World"; int result = str1.compare(str2); // result < 0
12. c_str():将字符串转换为C风格字符串,
例如:string str = "Hello World"; const char* cStr = str.c_str();
13. stoi():将字符串转换为整数,
例如:string str = "123"; int num = stoi(str); // num = 123
14. stod():将字符串转换为双精度浮点数,
例如:string str = "3.14"; double num = stod(str); // num = 3.14
15. to_string():将数字转换为字符串,
例如:int num = 123; string str = to_string(num); // str = "123"
16. str.erase(unique(alls.begin(),alls.end()),str.end()); //去重
string、char的相互转换
char*转string
string s; char *p = "hello"; //直接赋值即可 s = p;
string转char*
string str="world"; const char *p = str.c_str(); //要加const并且等号右边用char* cout<<p;
string转char[]:循环遍历string [i] 并赋值给char [i]
6. 其他函数:
- memset:内存清零,使用memset(ptr, value, size)将ptr指向的内存块的前size个字节设置为value。
- memcpy:内存复制,使用memcpy(dest, src, size)将src指向的内存块的前size个字节复制到dest指向的内存块中。
- rand:随机数生成,使用rand()生成一个随机数。
- time:获取当前时间,使用time(NULL)获取当前时间的秒数。
- assert:断言,使用assert(expression)判断expression是否为真,若为假则输出错误信息并终止程序。
string转int、long long、double
//atoi、atol、atof同理 #include<iostream> #include<stdlib.h> using namespace std; int main() { string str("1234"); int num=atoi(str.c_str()); cout<<num; //输出int型的 1234 }
int转string
#include<iostream> #include<string> using namespace std; int main(){ int num=12345; string str; str=to_string(num); cout<<str; }
二、下面开始对引言提到的关键词逐个进行简单的用法解释
(编译器使用devc++ 5.11)
下面先来介绍一下简单的数据结构和一些头文件:
iostream: 基本的输入、输出
vector:动态数组 可以在运行时添加或删除元素
queue:队列
stack:栈
set:集合 可以存储不重复的元素,并且可以进行集合的交、并、差等操作。
map :映射(下角标可以为字符串、负数… 的数组)
algorithm: 里包含了许多常用的算法。(…带持续更新)