C++常见的数学函数以及stl模板的使用

仍在完善当中,如有问题,欢迎讨论

常用math函数

  • fabs(取绝对值)
  • floor(向下取整)或ceil(向上取整)
  • pow(指数函数)
  • log(对数函数)
  • sqrt(开方函数)
  • round(四舍五入函数)
  • sin、cos、asin……常见的三角函数

C++ 标准模板库介绍

Vecotr用法详解

  • 定义方式: vector name;
    • eg: vector name;
    • 通俗的来说,可将这种变量类型理解为变长数组
  • 二维vector的两种写法
    • vector Arrayname[arraysize]
    • eg:vector v[100];
    • vector<vector> name;
    • 二者两种写法的区别是前者定长,后者变长
  • vector元素的访问
    • 通过下标访问
    • 通过迭代器访问
      • 迭代器定义: vector::iterator it ;
      • notice: vector不支持it<v.end()的写法,要求使用vector!=v.end();
      • notice:仅有vector和string支持vector。begin()+i的方式进行遍历
      • notce:迭代器的实质可以理解为一种指针
  • vector的常用函数
    • vec.push_back(); // 添加末尾元素
    • vec.pop_back(); // 删除末尾元素
    • vec.size(); //获取元素个数
    • vec.clear(); //清空元素个数
    • vec.insert(it, x); //指定位置插入元素
    • vec.erase(it); //指定位置删除元素
      • vec.erase(first, last); // 删除指定区间的元素
  • 常见用途
    • 存储数据
    • 存储邻接表

set的常见用法

  • 定义: set name;
  • 自身特性:容器内元素唯一且自动升序排列
  • 访问方式以及二维数组的定义方式同vector,在此不再赘述
  • set的常用函数
    • set.insert(); //插入指定元素
    • set.find(); //查找为某值的某元素
    • set.erase(); //删除指定位置或指定值的元素
      • set.erase(first, last); //删除指定区间的元素
    • set.size(); //获取set内的元素个数
    • set.clear(); //清空set内的所有元素
  • 拓展相关
    • 倘若处理不唯一的状况,则需要使用multiset
    • 倘若仅仅实现去重的要求,则需使用unordered_set

stirng的常见用法

  • 注意:sring与string.h是不同的头文件
  • 访问方式同vector,故不再赘述
  • string的常用函数
    • operator+=; //可利用此法拼接字符串
    • compare operator; //可利用此法,按字典序比较字符串
    • str.length(); / size(); //用于返回string的长度
    • str.insert(pos, str); //指定位置插入字符串
      • sre.insert(it, it2, it3); //在指定位置利用迭代器插入字符串
    • str.erase(); //删除指定位置元素
      • str.erase(first, last); // 删除指定区间元素
      • str.erase(pos, length); //删除起始位置到length长度的字符串
    • str.clear(); //清空string
    • str.substr(pos, len); //返回从pos位置到len长的子串
    • string::npos //find找不到后的值
    • str.find(str2); //返回第一次出现的位置
      • str.find(str2, pos); //从pos开始匹配str2
    • str.replace(pos, len, str2); // 从pos开始,将长度为len的子串替换为str2
      • str.replace(it1, it2, it3); //利用迭代器替换

map的常见用法

  • 定义:map<typename1, typename2> mp;
  • 通俗理解,即一种可映射的容器,可理解,名字对应年龄之类的
  • 元素访问手段
    • 通过下标直接访问
    • 通过迭代器访问
      • it->first(访问当前的key), it->second(访问当前的value)
  • map常用函数
    • map.find(); //返回键为key的迭代映射器
    • map.earse(); //利用迭代器删除||利用key删除
      • map.erase(first, last); //删除指定区间的值
    • map.szie(); //获得映射的对数
    • map.clear(); //清空所有元素

queue的常见用法

  • 定义: queue name;
  • 元素的访问手段
    • q.front()、q.back()
  • queue常用函数
    • q.push(); //令元素入队
    • q.front()/q.back(); //访问元素
    • q.pop(); //令元素出队
    • q.empty(); //判断队列是否为空
    • q.size(); //队列内的元素个数
  • 主要应用,广度优先搜索
  • 扩展
    • deque双端队列
    • priority_queue 优先级队列

priority_queue的常见用法

  • 定义: priority_queue name;

  • 元素的访问手段

    • q.top(); //只能访问优先级最高的队首元素
  • priority_queue常用函数

    • q.push(); //令元素入队
    • q.top(); //访问元素
    • q.pop(); //令元素出队
    • q.empty(); //判断队列是否为空
    • q.size(); //队列内的元素个数
  • 队列的默认优先级,若int型,值越大,优先级越高,若字符型,字典序越大,优先级越高

  • 可根据一定手段自定优先级

stack的常见用法

  • 定义:stack name;
  • 元素的访问手段
    • s.top();
  • stack的常用函数
    • s.push()/s.top()/s.pop()/s.empty()/s.size();

pair的常见用法

  • 定义: pair<typename1, typename2> name;
  • 通俗理解为含有两个元素的结构体
  • 元素的常用访问手段
    • p.first/p.sceond;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值