文章目錄
- 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;}
}