leetcode刷题常用函数

本文介绍了C++中的一些关键函数和容器操作,包括int与string之间的转换、累积函数accumulate、排序函数sort、查找最小/最大元素、向量操作如push_back和emplace_back,以及字符串处理等。这些基础知识对于理解和编写C++程序至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1、int与string单个字符转换

2、accumulate

3、max

4、sort

5、 substr

6、 min_element与max_element

7、make_pair

8、 push_back与emplace_back

9、stoi

10、map.count 

11、 erase

12、swap

13、reverse

14、 resize

15、 pop_back与erase

16、to_string

17、unique

18、 insert

19、 isdigit

20、 pow

21、 set.lower_bound upper_bound

22、string.find

23、isalpha 

24、 toupper与tolower

  • 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};   // 第二种
      }
  • 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)
  • 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');
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值