c++函数使用记录

本文最后更新于:2021年7月28日 下午

c++函数使用记录

STL 函数

  • equal_range():一个二分查找的算法,试图在已排序的[first,last)中寻找value,它返回一对迭代器i和j

    • 如果该键值在容器中存在,则i是在不破坏次序的前提下,value可插入的第一个位置(亦即lower_bound),j是在不破坏次序的前提下,value可插入的最后一个位置(亦即upper_bound);如果找不到,则i,j都指向此键值应该插入的位置。

    • C++11 简便写法 auto bounds = equal_range(nums.begin(), nums.end(), target);

    • 可以将其看做lower_boundupper_bound的结合

    • vector map都可以用

      1
      2
      vector: equal_range(nums.begin(), nums.end(), target);
      map:
  • distance():计算迭代器之间的距离

    1
    int dis=distance(nums.begin(),nums.end()
  • remove():移除区间{beg,end)中每一个“与value相等”的元素。最后remove返回指向“目标数列”的end()的迭代器

    • 只会移动元素,并且也不是将vlaues移到最后面去
    1
    vcetor:remove(nums.begin(),nums.end(),value);
  • Remove_if():移除区间[beg,end)中每一个“令判断式获得true”的元素

    1
    2
    bool isValue(int x) { return x==target; }
    vcetor:remove(nums.begin(),nums.end(),isValue);
  • erase():删除容器中的某些元素,返回经过删除操作后的容器

    1
    2
    erase(iter);
    erase(iter.begin,iter.end) /** iter代表迭代器 **/
  • fill():为某容器某个区间赋相同值

    1
    vcetor:fill(nums.begin(),nums.end(),0);
  • find(first, end, value):返回区间[first,end)中第一个值等于value的元素位置;若未找到,返回end。函数返回的是迭代器或指针,即位置信息

    • 如果查找整个区间,可以直接xx.find(value)
  • reverse(begin,end):反转

    • 多用于string、vector
  • replace(begin,end,x,xx):在容器[being,end)范围内,将所有的x替换为xxx

    • replace_if(being,end,条件判断,xxx)

String 函数

  • str.replace()

    1
    2
    str.replace(pos,2,"#")	//从位置pos开始的两个字符替换成#
    str.replace(begin(),end(),"#") //[begin,end)的字符替换成"#"
  • str.substr(begin,length):从索引begin开始,截取长度为length的字符

  • stoi(stirng s):将用字符串表示的数字转换为Int

    • 非数字字符转换会报错

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!