目录
21、 set.lower_bound upper_bound
-
1、int与string单个字符转换
string s = "45623"; // 字符转int int a = s[2] - '0'; // 6 // int转字符 s[3] = 1 + '0'; // '1'
-
2、accumulate
accumulate(nums.begin(), nums.end(), 0); // 第三个参数表示累积和的初值
-
3、max
- 只能比较两个数
-
4、sort
// 默认排序 sort(nums.begin(), nums.end()); // 升序 // 自定义排序 sort(nums.begin(), nums.end(), cmp); // cmp函数定义 static bool cmp(vector<int>& a, vector<int>& b) { return a[0] > b[0]; // 数组第一个元素大的排前面 }
-
5、 substr
s.substr(pos, len);
-
6、 min_element与max_element
// 值下标 int maxPosition = max_element(nums.begin(), nums.end()) - nums.begin(); //最大值下标 int minPosition = min_element(nums.begin(), nums.end()) - nums.begin(); //最小值下标 // 值 int maxValue = *max_element(nums.begin(), nums.end()); //最大值 int minValue = *min_element(nums.begin(), nums.end()); //最小值
-
7、make_pair
- make_pair(a, b); // 两个数据组合成一个数据,可以是同一类型或不同类型
auto [count0, count1] = count(str); pair<int, int> count(const string & s){ ... return make_pair(count0, count1); // 第一种 return {count0, count1}; // 第二种 }
- make_pair(a, b); // 两个数据组合成一个数据,可以是同一类型或不同类型
-
8、 push_back与emplace_back
- 在vector后面加元素
- 不同点是emplace_back能就地通过参数构造对象,不需要拷贝或者移动内存,相比push_back能更好地避免内存的拷贝与移动,使容器插入元素的性能得到进一步提升
- 在大多数情况下应该优先使用emplace_back来代替push_back
-
9、stoi
- 将string字符串转换为int类型
// str:表示所要转化的字符串 // idx:表示想要str中开始转化的位置,默认为从第一个字符开始 // base:表示要用的进制(如2进制、16进制,默认为10进制)转化为int类型十进制数字 int stoi (const string& str, size_t* idx = 0, int base = 10)
- 将string字符串转换为int类型
-
10、map.count
map_name.count(key) // 存在返回1,不存在返回0
-
11、 erase
erase(pos, n); // 删除从pos开始的n个字符,比如erase(0, 1)就是删除第一个字符 erase(position); // 删除position处的一个字符(position是个string类型的迭代器) erase(first,last); // 删除从first到last之间的字符(first和last都是迭代器)
-
12、swap
swap(nums[i], nums[j]); // 交换数组中两个数
-
13、reverse
reverse(nums.begin(), nums.end());
-
14、 resize
resize(n);
-
15、 pop_back与erase
nums.pop_back(); // 删除容器内的最后一个元素
-
16、to_string
string str = to_string(num); //将num从整形转换成string类型
-
17、unique
- unique函数的去重过程实际上就是不停的把后面不重复的元素移到前面来,也可以说是用不重复的元素占领重复元素的位置
- unique函数通常和erase函数一起使用,来达到删除重复元素的目的。(注:此处的删除是真正的删除,即从容器中去除重复的元素,容器的长度也发生了变换;而单纯的使用unique函数的话,容器的长度并没有发生变化,只是元素的位置发生了变化)
new_end = unique(nums.begin(), nums.end()); //注意unique的返回值 nums.erase(new_end, nums.end());
-
18、 insert
// 1、在position位置添加x iterator insert ( iterator position, const T& x ); // 2、在position位置添加n个x void insert ( iterator position, size_type n, const T& x ); // 3、在position位置添加另一容器[first,last)范围内的元素 void insert ( iterator position, InputIterator first, InputIterator last );
-
19、 isdigit
- 判断字符是否为十进制数字字符
int isdigit(int c); // c是数字,返回非零值,否则返回0
- 判断字符是否为十进制数字字符
-
20、 pow
pow(x,y) // 计算x的y次幂
-
21、 set.lower_bound upper_bound
// 二分查找一个有序集(set),返回第一个大于等于x的数,如果没找到,返回末尾的迭代器位置 set.lower_bound (x) // 二分查找一个有序集(set),返回第一个小于等于x的数,如果没找到,返回末尾的迭代器位置 set.upper_bound (x)
-
22、string.find
s.find(a) // 快速查找字符串s中是否有子串a,如果有返回s的起始位置
-
23、isalpha
isalpha(c); 判断当前char字符是否是字母。是字母返回true,否则false
-
24、 toupper与tolower
// 将字符转换为大写字母 toupper('a'); // 把字符转换成小写字母 tolower('A');