I/O

c++

  • cin >>
  • cout << res << endl

记忆符号方向即可,endl代表换行符。这两个函数都可以链式操作

c

函数库

cstdio

  • char * fgets ( char * str, int num, FILE * stream ) 读取一行输入

stdlib

  • double atof(const char *str) 把参数 str 所指向的字符串转换为一个浮点数(类型为 double 型)。
  • int atoi(const char *str)把参数 str 所指向的字符串转换为一个整数(类型为 int 型)。
  • long int atol(const char *str)把参数 str 所指向的字符串转换为一个长整数(类型为 long int 型)。

climits

包含INT_MAX、INT_MIN等
// UPADING

cstring

  • int sscanf(const char *str, const char *format, …) 从字符串读取格式化输入。
  • int sprintf(char *str, const char *format, …) 发送格式化输出到 str 所指向的字符串
  • 上述两个函数的使用见A1108 Finding Average

algorithm

  • sort函数:

    • sort(<type>* begin, <type>* end, bool cmp)
    • sort(iterator begin, iterator end, bool cmp)
  • copy(<#_InputIterator __first#>, _InputIterator __last, <#_OutputIterator __result#>) 用于复制数组或者可迭代容器。三个参数分别是源的起始迭代器,源的结束迭代器,副本的起始迭代器。
  • memset(<T> * first, <T> value, int sizeOf)
  • fill(G[0], G[0] + MAX_N * MAX_N, false); 这是一个二维数组的例子,要注意。
  • template ForwardIterator max_element (ForwardIterator first, ForwardIterator last); 返回stl中的最大的元素,返回的是一个指针

functional

  • greater()等,用于排序的时候从大到小排序。

常用数据结构

遍历

除了map,大部分可以使用forEach语法。如果使用迭代器语法则类似下面这样。

for(auto lt: stl.begin(); lt != stl.cend(); lt++){//lt->......
}

如果是map,一般是这样:

for(auto lt: stl.begin(); lt != stl.cend(); lt++){//lt->first表示key//lt->value表示value
}

通用操作

  • erase(iterator pos) 擦除指定位置的元素
  • erase(iterator begin, iterator end) 擦除指定范围内的元素,左开右闭
  • iterator find(value) 查找元素,只能在vector、set、map等容器中使用

vector

  • resize(int) 改变尺寸

set

  • 插入:insert(T value)
  • 计数:count(T value)

string

有些输入比较大的题目,在函数调用中,如果string不会被改动,最好使用引用(&),以减少内存的复制。当然,不正确地使用引用会出现问题。

  • to_string(double, int, …) 将基本类型转化为字符串
  • reverse(.begin(), s.end()) 反转字符串
  • string substr(int startPos, int Len) 求字符串子串
  • char* c_str() 返回原始字符数组
  • getline(cin, string str) 用于读取一行数据
  • insert(iterator pos, char c) 插入一个字符

sstream

类型名streamstring

  • sstream << nValue 输入位字符串
  • sstream >> strResult 输出位字符串
  • sstream.str() 取出字符串
  • sstream.str("") 清空

逆向遍历

for(auto lt = n.rbegin(); lt != n.rend(); lt++){//......
}

优先队列

比较操作

friend bool operator < (Window w1, Window w2){return w1.popTime > w2.popTime;}

小于操作代表返回w1的优先级是否比w2的小,优先级大的在列头。

priority_queue<int, vector<int>, greater<int> > pq// 后面两个> > 千万不能连着写

小根堆,记得引入functional

I/O重定向

freopen(“data.in”,“r”,stdin);
freopen(“data.out”,“w”,stdout);

可以节约很多时间。

命名空间

如果使用using namespace std;可能会导致变量冲突。

【PAT】PAT总结《语法篇》相关推荐

  1. Airbnb搜索:深度学习排序算法如何进化?

    导读 本文将基于Airbnb KDD 2018年到2020年的论文,介绍深度学习在Airbnb搜索排序场景落地的宝贵经验,对工业界搜索.推荐.广告算法的改进,具有很好的指导意义. 2018年,Airb ...

  2. 值得收藏的时间复杂度速查表:数据结构操作、排序算法、图操作、堆操作

    时间复杂度速查表 这篇文章覆盖了计算机科学里面常见算法的时间和空间的大 OBig-O 复杂度. 在参加面试前,我们经常需要花费很多时间从互联网上查找各种搜索和排序算法的优劣,了节省大家的时间,我收集了 ...

  3. 阿里文娱搜索排序算法实践和思考(附交流视频和PPT下载链接)

    开工大吉! 本次分享以优酷为例介绍阿里文娱视频搜索的相关业务和算法体系,视频搜索基础相关性和排序算法的特点和挑战以及技术实践方案:听众还了解了优酷在多模态视频搜索上的探索和实践技术方案. 内容摘要 ▽ ...

  4. 必须知道的八大种排序算法【java实现】

    一.冒泡排序 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成. ...

  5. 8种排序算法 java_必须知道的八大种排序算法【java实现】

    一.冒泡排序 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成. ...

  6. 数据结构学习笔记——基数排序 | 排序算法总结

    目录 一.基数排序排序思想 二.基数排序算法分析 三.排序算法总结 (一)分类 (二)比较 (三)详细分析 一.基数排序排序思想 基数排序与前面的排序算法不一样,它不基于比较和移动元素来进行排序,而是 ...

  7. 【排序算法】快速排序的分析改进

    基本的快速排序 最基本的快速排序是由C.A.R.Hoare在1960年提出的,快速排序的算法是一种分治排序算法 它将数组划分为两个部分,然后分别对两个部分进行排序 快速每次对数组重新排序,选择一个基准 ...

  8. 【PAT】PAT总结《搜索、打表、分治、排序算法、队列、栈、堆、Hash》

    打表 打表这个技巧其实我们在素数部分的题已经涉及到了.还是要仔细思考,什么时候应该打表,打表有助于减少后续的计算的时候,我们应该打表, 特别是查询量特别大,即时计算无论多么快都会超时的情况.或者逆向运 ...

  9. DSt:数据结构的最强学习路线之数据结构知识讲解与刷题平台、刷题集合、问题为导向的十大类刷题算法(数组和字符串、栈和队列、二叉树、堆实现、图、哈希表、排序和搜索、动态规划/回溯法/递归/贪心/分治)总

    DSt:数据结构的最强学习路线之数据结构知识讲解与刷题平台.刷题集合.问题为导向的十大类刷题算法(数组和字符串.栈和队列.二叉树.堆实现.图.哈希表.排序和搜索.动态规划/回溯法/递归/贪心/分治)总 ...

  10. 51Nod-1010 只包含因子2 3 5的数【打表+排序+二分搜索】

    1010 只包含因子2 3 5的数 基准时间限制:1秒 空间限制:131072KB 分值:10难度:2级算法题 收藏 关注 K的因子中只包含2 3 5.满足条件的前10个数是:2,3,4,5,6,8, ...

最新文章

  1. 最大的ai计算机模型,Microsoft构建了世界排名前五的超级计算机,用于在Azure上训练大型AI模型...
  2. 解决虚拟机VM 与 Device/Credential Guard 不兼容。在禁用 Device/Credential Guard 后,可以运行 VM 的方法
  3. ExtJs与JavaScript的call方法
  4. 【python】排序算法的稳定性冒泡排序(画图详细讲解)
  5. 【计算机图形学】实验:C#.net环境下的图形变换完整实验操作流程
  6. 小程序开发工具不显示tobar图标
  7. php输出mysql查询结果_PHP简单获取数据库查询结果并返回JSON
  8. 利用 QQWry.Dat 实现 IP 地址高效检索(PHP)
  9. CCF202109-2 非零段划分(100分)【序列处理】
  10. 梳子刻字刻什么好_石阶上被刻了1700多个汉字,网友狂赞!
  11. sourceoffsite,sos_collab,版本控制,安装过程中不能创建数据,相关服务无法启动
  12. repaire mysql_sql错误:……is marked as crashed and should be repaire
  13. 【C++】给定两个没有刻度的容器,对于任意给定的容积,求出如何只用两个瓶装出L升的水
  14. python超清壁纸_python爬虫 爬取超清壁纸代码实例
  15. vue 在线阅读PDF
  16. 傅福:我可能是杭州接受BCH付款的第一个数码商家
  17. 【kali技巧】查看宿主机windows的ip地址
  18. 汇编8086复习——基础知识、指令汇总、上机实验踩坑
  19. C++后端开发的一些工具
  20. 怎样将动图静图拼在一起?教你在线拼接图片

热门文章

  1. 维数灾难或者维数诅咒的含义
  2. 反对一些流行的矫情的话
  3. 外汇交易资金管理的七条黄金准则
  4. 用Hive分析“余额宝”躺着赚大钱背后的逻辑
  5. 开一家连锁干洗店成本如何
  6. 【军哥谈CI框架】之制作简单留言板的例子
  7. 第11A关(难,要有士气)
  8. 【应用】使用STM32单片机定时器的Encoder模式驱动数字旋转编码开关
  9. 书论31 张怀瓘《六体书论》
  10. 打印系统开发(7)——如何使用打印机