PAT-甲级刷题笔记和总结
本帖主要记录一些自己在刷题过程中的一些笔记,包括:
1、常用的函数
2、STL中常用方法
3、常见错误
4、其他常用方法
5、刷题过程中的常见算法:https://www.cnblogs.com/Mered1th/category/1403573.html
一、常用函数
头文件 #include<cctype>
isalpha 字母(包括大写小写)
islower (小写字母)
isupper (大写字母)
isalnum(字母大写小写+数字)
isblank(space和\t)
isspace(space、\t、\r、\n)
char t=tolower(c)将字符转换为小写字符赋值给t
头文件 #include<stdlib.h>
绝对值函数 abs()
substr()函数:作用是截取某个字符串中的子串
string s; getline(cin,s);//输入 ) //表示从下标4开始一直到结束 ,) //表示从下标5开始,3个字符
如果是char s[len], 输入要改为cin.getline(s,len)
string s; getline(cin,s); ]; cin.getline(str,);
strcmp()函数:字符串比较函数,注意返回值
strcmp(str1,str2);
若str1=str2,则返回零; 若str1<str2,则返回负数; 若str1>str2,则返回正数。
这个大部分情况下可用String代替。
取整函数:
向上取整直接可用+0.5
ceil(x)返回不小于x的最小整数值(然后转换为double型)。
floor(x)返回不大于x的最大整数值。
round(x)返回x的四舍五入整数值。
find和count的区别
count函数的功能是:统计容器中等于value元素的个数。先看一下函数的参数:
count(first,last,value);
first是容器的首迭代器,last是容器的末迭代器,value是询问的元素。
如果有返回1,无则返回0。返回值只能是1或0
而find()函数是返回其元素的位置(迭代器)
sprintf、sscanf用法
//sscanf的作用:把字符数组str中的内容以"%d"的格式写到n中 sscanf(str,"%d",&n); //sprintf的作用:把n以"%d"的格式写到str字符数组中 sprintf(str,") //str必须为数组名,不能是string类
stoi、stod函数(仅C++11支持):
//作用:分别将字符串转换为int或double型 //to_string函数: ); //将123转换为字符串 //c_str()函数:返回字符串首字符地址 //string类s1输出时可以printf("%s",s1.c_str());
二、STL中常用方法
vector初始化:
vector<)//容量为n,初始值为1
vector容器的去重unique函数:
利用unique函数,unique()作用是将不重复的元素往前移(将重复元素往后移动),返回值是重复元素的第一个位置。
先排序,去重配合erase函数。
ans.erase(unique(ans.begin,ans.end),ans.end) //用unique前先排序
vector的erase与insert要用迭代器,string的erase和insert无须迭代器。
s.insert(0,4-s.length(),'0'); 在0的位置插入4-s.length()个'0'
s.find返回的是下标的值,如果没有,用 “==string::npos”
lower_bound(first,last,val); //第一个值大于等于val的元素的位置 ,-); //第一个值大于val的元素的位置
函数返回的是位置! 如果要变成下标需要在后面减起始地址a
三、常见错误
常见错误:
1、段错误:大部分是因越界、非法访存引起的
2、浮点错误:除数或余数为0
3、注意输出的格式和单复数。
四、其他
C++构造函数写法
class Complex{ double real, imag; Complex(); //第二个参数的默认值为0 }; Complex::Complex(double r,double i){ real = r; imag = i; }
实例:结构体Point用于存放平面点的坐标x,y
struct Point{ int x,y; Point(){}; Point(int _x,int _y){ x=_x; y=_y; } };
结构体内重载小于号 A1129 Recommendation System
struct node { int value, cnt; bool operator < (const node &a) const { if (cnt != a.cnt){ return cnt > a.cnt; } else return value < a.value; } };//将node按照cnt排序,如果cnt相等就按value排序
完全二叉树的静态存储:
起始编号为0:index*2+1, index*2+2
起始编号为1,index*2,index*2+1
bool cmp(node a,node b){ if(a.flag==false||b.flag==false){ return a.flag>b.flag; //这样无效节点会排在后面 } else return a.value<b.value; }
字符串hash映射:
3、有数字,增加进制数。举例:
最新文章
- overflow:hidden清楚浮动的影响
- Atian inputmethod 输入法解决方案 方言与多语言多文字支持 英语汉字汉语阿拉伯文的支持 (au
- EF CodeFirs 代码迁移、数据迁移
- Codeforces 724 E Goods transportation
- ora-00031:session marked for kill处理oracle中杀不掉的锁
- ADO.NET 连接方式和非链接方式访问数据库
- 什么是EBC和EBO
- emctl start dbconsole OC4J_dbconsole*** not found
- 力控ADO组件数据源设置
- 开放计算平台——数据仓库(Hive)权限控制
- Ubuntu在下面LAMP(Linux+Apache+MySQL+PHP) 开发环境的搭建
- 为什么要学Python
- pagehelper 使用
- Java 修饰符顺序问题
- py库: Tesseract-OCR(图像文字识别)
- 【驱动】linux下I2C驱动架构全面分析
- vue--子组件主动获取父组件的数据和方法
- [转]利用C#自带组件强壮程序日志
- location 对象属性
- libcurl代码示例
热门文章
- 1017 A除以B
- mysql 易忽略点
- Redis学习第七课:键值命令和服务器命令
- HDU 4862
- PowerShell添加和部署WSP
- 4.1 shell文本过滤、find、awk、grep
- U-Boot_bmp_logo_hacking
- STM32中TIMx的映射及其通道
- mac 常用开发软件列表
- Python中if __name__ == ";__main__";详解