仍在完善当中,如有问题,欢迎讨论
常用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;