- 在大整数运算、比大小中,用long double有奇效,比long long好得多,能满足2^64位精度运算需求(大概是10 ^19)。但是要注意,如果用scanf输入要%llf
- 在输出时钟时间的时候常常要求格式化输出为03:05这样,可以用%02d
- 以前⽤用char[]的⽅方式处理理字符串串很繁琐,现在有了了string类,定义、拼接、输出、处理理都更更加简单啦~
不不过string只能⽤用cin和cout处理理,⽆无法⽤用scanf和printf处理理。 string s; // 定义⼀一个空字符串串s getline(cin, s); // 读取⼀一⾏行行的字符串串,包括空格 cout << s.length(); // 输出字符串串s的⻓长度
- string中还有个很常⽤用的函数叫做substr,作⽤用是截取某个字符串串中的⼦子串串,⽤用法有两种形式:
string s2 = s.substr(4); // 表示从下标4开始⼀一直到结束
string s3 = s.substr(5, 3); // 表示从下标5开始,3个字符 - 关于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,作⽤用是将某个字符转为⼩小写或者⼤大写
- 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 << " ";
}
-
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) -
如下代码:
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代表迭代器
- insert(2,string2) 在2号位置插入string2 ;insert(it,it2,it3)在迭代器it中插入,it2到it3的东西
- erase(it) 删除一个; erase(it,it2)删除这个左闭右开区间东西。erase(2,3)删除2号位开始,持续3个位置的东西。
- clear() 清空
- substr(2,3)返回从2号位开始,持续3个长度的字串,注意不是2号位到3号位。
- find(str)返回字串str的位置,失败返回-1;
- replace(2,3,string)2-3号位替换为string;replace(it,it2,string)同理。
PART2
为什么要分part==因为markdown编辑器不支持分级序号=所以不用管什么part
- #include<bits/stdc++.h> 万能头文件,包含所有头文件。
- 在main函数第一句加入
ios::sync_with_stdio(false);
cin.tie(0);
能大大提升cin和cout效率,而不用去改成printf
在大量输入输出的题目中很有用。
- vector不能通过下标操作添加元素。
- set:内部有序且不含重复元素,插入用insert,用于解决去重问题;
- to_string函数的参数是 int double等类型,而不能是char
- stoi的参数需要时string类型,不能是char,而string[n]返回类型是char,不能直接转换,你会想用toshtring配合to_string,然而to_string不能转char的
- queue的pop是不返回队首元素的,所以取队首元素要用front函数。