文章目录
- 01_算法中C++需注意的基本知识
- cmath头文件
- 一些计算符
- ASCII码表
- 数据类型长度
- 运算符
- cout固定输出格式
- 浮点数的比较
- max排序自定义类型
- 字符的大小写转换与判断
- 判断字符是数字还是字母
- 02_数据结构需要注意的内容
- 1.string
- getline函数的使用
- string::find
- substr截取字符串
- string与int之间的转化
- 翻转字符串
- 2.优先级队列(priority_queue)
- 3.set
- unique去重函数
01_算法中C++需注意的基本知识
cmath头文件
C++ 标准库标头 - cppreference.com
sqrt
计算平方根
pow
计算平方
fabs
计算浮点数绝对值
abs
计算整数的绝对值
ceil
浮点数向上取整
floor
浮点数向下取整
一些计算符
#include <iostream>
using namespace std;int main()
{double a = 1e5;//1.0*10^5cout<<a<<endl; // 100000return 0;
}
ASCII码表
A~Z: 65~90
A~Z: 97~122 两者中间相差32
0~9: 48~57
\n
: 10
数据类型长度
#define SHRT_MIN (-32768) //有符号16位整型的最⼩值
#define SHRT_MAX 32767 //有符号16位整型的最⼤值
#define USHRT_MAX 0xffffU //⽆符号16位整型的最⼤值
#define INT_MIN (-2147483647 - 1) //有符号整型的最⼩值
#define INT_MAX 2147483647 //有符号整型的最⼤值
类型 | 最小值 | 最大值 |
---|---|---|
char | CHAR_MIN (-27) [-128] | CHAR_MAX (27-1) [127] |
unsigned char | 0 | UCHAR_MAX (28-1) [255] |
short | SHRT_MIN (-215) | SHRT_MAX (215-1) [32767] |
unsinged short | 0 | USHRT_MAX (216-1) |
int | INT_MIN (-232) | INT_MAX (232-1) |
unsigned int | 0 | UINT_MAX (232-1) |
long | LONG_MIN (-231) | LONG_MAX (232-1) |
unsigned long | 0 | ULONG_MAX (231-1) |
long long | LONG_MIN (-263) | LONG_MAX (263-1) |
usigned long long | LLONG_MIN (0) | ULLONG_MAX (264-1) |
运算符
%
两边需要为整数,不能为小数
用小数去/
结果才会出现小数
%
运算时结果的正负仅仅和第一个操作数有关如: -11 % -5 = -1
-11 % 5 = -1
11 % -5 = 1
#include <iostream>
#include <cstdio>
using namespace std;int main()
{char ch = getchar();putchar(ch);return 0;
}
cout固定输出格式
setu
设置宽度 setfill
设置填充
scientific
固定为科学计数法表示
setprecision
设置小数点位数 fixed
固定为非科学计数法表示
dec
十进制 hex
十六进制 oct
八进制
left
设置左对齐 right
设置右对齐
浮点数的比较
- C++中为了⽀持混合使⽤ cin/cout 和 scanf/printf ,C++ 标准库默认会将 cin 、 cout
等 C++ 流对象与 stdin 、 stdout 等 C 标准库的流对象同步在⼀起。这种同步操作意味着每次
使⽤ cin 或 cout 时,都会⾃动刷新 C 标准库的缓冲区,以确保 C++ 和 C 的 I/O 是⼀致的。这
就导致了性能的下降。 - 在默认情况下, cin 和 cout 之间存在⼀种绑定关系。这种绑定意味着,每当从 cin 读取数据
时,任何之前通过 cout 输出的内容都会被强制刷新到屏幕上。这种绑定也可能导致性能问题,特
别是在需要频繁读取⼤量数据的情况下。
max排序自定义类型
字符的大小写转换与判断
判断字符是数字还是字母
02_数据结构需要注意的内容
1.string
getline函数的使用
#include <iostream>
using namespace std;
#include <string>int main()
{string s; getline(cin,s); //读入带空格的字符串 cout<<s;return 0;
}
默认以\n
结束读取,当然也可自定义结束字符:
#include <iostream>
using namespace std;
#include <string>int main()
{string s;
// getline(cin,s); //读入带空格的字符串
// cout<<s;getline(cin,s,'a');cout<<s; return 0;
}
string::find
int main()
{string s = "hello world hello everyone";string str = "llo";size_t n = s.find(str); //2cout<< n <<endl; n = s.find(str,n+1); //14cout<< n <<endl;return 0;
}
substr截取字符串
string与int之间的转化
翻转字符串
2.优先级队列(priority_queue)
自定义结构进行排序
#include <iostream>
using namespace std;
#include <queue>
struct node
{int x,y,z;// //用y比较 创建小根堆
// bool operator < (const node& n1) const
// {
// return y>n1.y;
// }// 用y比较 创建大根堆 bool operator < (const node& n1) const{return y<n1.y;}
};int main()
{priority_queue<node> hp;for(int i = 1;i<=10;i++){hp.push({i,i+1,i+i});}while(hp.size()){auto t = hp.top(); hp.pop();cout<<t.x<<" "<<t.y<<" "<<t.z<<endl;}
}