【通过PAT复习C++与数据结构】刷PAT及其他算法题笔记(持续更新中)

  1. 在大整数运算、比大小中,用long double有奇效,比long long好得多,能满足2^64位精度运算需求(大概是10 ^19)。但是要注意,如果用scanf输入要%llf
  2. 在输出时钟时间的时候常常要求格式化输出为03:05这样,可以用%02d在这里插入图片描述
  3. 以前⽤用char[]的⽅方式处理理字符串串很繁琐,现在有了了string类,定义、拼接、输出、处理理都更更加简单啦~
    不不过string只能⽤用cin和cout处理理,⽆无法⽤用scanf和printf处理理。
  4. string s; // 定义⼀一个空字符串串s getline(cin, s); // 读取⼀一⾏行行的字符串串,包括空格 cout << s.length(); // 输出字符串串s的⻓长度
  5. string中还有个很常⽤用的函数叫做substr,作⽤用是截取某个字符串串中的⼦子串串,⽤用法有两种形式:
    string s2 = s.substr(4); // 表示从下标4开始⼀一直到结束
    string s3 = s.substr(5, 3); // 表示从下标5开始,3个字符
  6. 关于cctype头⽂文件⾥里里的⼀一些函数
    刚刚在头⽂文件那⼀一段中也提到,cctype本质上是C语⾔言标准函数库中的头⽂文件#include
    <ctype.h> ,其实并不不属于C++新特性的范畴,在刷PAT⼀一些字符串串逻辑题的时候也经常⽤用到,但是
    很多⼈人似乎不不了了解这个头⽂文件中的函数,所以在这⾥里里单独提⼀一下~
    可能平时我们判断⼀一个字符是否是字⺟母,但是在cctype中已经定义好了了判断这些字符应该所属的范围,直接引⼊入这个头⽂文件并且使⽤用⾥里里⾯面的函
    数判断即可,⽆无需⾃自⼰己⼿手写(⾃自⼰己⼿手写有时候可能写错或者漏漏写~)++

if (isalpha©) {
cout << “c is alpha”;
}
return 0;
总的来说常⽤用的只有以下⼏几个:
isalpha 字⺟母(包括⼤大写、⼩小写)
islower(⼩小写字⺟母)
isupper(⼤大写字⺟母)
isalnum(字⺟母⼤大写⼩小写+数字)
isblank(space和\t)
isspace(space、\t、\r、\n)
还有两个经常⽤用到的函数:tolower和
toupper,作⽤用是将某个字符转为⼩小写或者⼤大写

  1. auto 神奇用法
// 本来set的迭代器器遍历要这样写:
for(set<int>::iterator it = s.begin(); it != s.end(); it++) {
cout << *it << " ";
}
// 现在可以直接替换成这样的写法:
for(auto it = s.begin(); it != s.end(); it++) {
cout << *it << " ";
}
  1. string类型转换 不不仅有stoi、stod两种,相应的还有:
    stof (string to float)
    stold (string to long double)
    stol (string to long)
    stoll (string to long long)
    stoul (string to unsigned long)
    stoull (string to unsigned long long)

  2. 如下代码:

int a = 10;

char b[a]; //编译不报错

//char b[a] = “jfkd”; //报错,使用变量定义长度时,不可在定义时同时进行初始化赋值,需要在之后进行赋值

原因:在C中,使用变量来定义数组长度是,这个数组可以定义,却不能同时进行初始化赋值,需要在之后赋值。
10. string vector 的.begin end函数返回的是迭代器,不是下标
11. to_string函数,stoi函数能简化工作量
12. fabs函数是math中的取绝对值,而不是abs,同时,输出是double类型的,要注意类型。
13. string类型的几个函数/其中it代表迭代器

  1. insert(2,string2) 在2号位置插入string2 ;insert(it,it2,it3)在迭代器it中插入,it2到it3的东西
  2. erase(it) 删除一个; erase(it,it2)删除这个左闭右开区间东西。erase(2,3)删除2号位开始,持续3个位置的东西。
  3. clear() 清空
  4. substr(2,3)返回从2号位开始,持续3个长度的字串,注意不是2号位到3号位。
  5. find(str)返回字串str的位置,失败返回-1;
  6. replace(2,3,string)2-3号位替换为string;replace(it,it2,string)同理。

PART2

为什么要分part==因为markdown编辑器不支持分级序号=所以不用管什么part

  1. #include<bits/stdc++.h> 万能头文件,包含所有头文件。
  2. 在main函数第一句加入

ios::sync_with_stdio(false);
cin.tie(0);

能大大提升cin和cout效率,而不用去改成printf
在大量输入输出的题目中很有用。
  1. vector不能通过下标操作添加元素。
  2. set:内部有序且不含重复元素,插入用insert,用于解决去重问题;
  3. to_string函数的参数是 int double等类型,而不能是char
  4. stoi的参数需要时string类型,不能是char,而string[n]返回类型是char,不能直接转换,你会想用toshtring配合to_string,然而to_string不能转char的
  5. queue的pop是不返回队首元素的,所以取队首元素要用front函数。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值