算法备忘录·杂项
本文最后更新于 2024年5月15日 凌晨
做 Leetcode 模式太多,切换到 ACM 模式,一时间竟忘记了输入输出以及头文件的写法。罪过罪过。
杂项
输入输出
输入
cin
<iostream>- 以空格、tab、换行符作为分隔符
- 从第一个非空格字符开始读取,直到遇到分隔符结束读取
getline()
string- 读取一行
- 读取的字符串包括空格,遇到换行符结束
string s;
getline(cin, s);
getchar()
- 读取一个字符
- 一般用来判断是否是换行符
char ch;
ch = getchar();
scanf()
<stdio.h>- 缓冲区不会自动清空,需要
getchar()来处理换行符,以防止输入的数据被下一个输入函数接收 - 因为 string 并非是 C 的原生类型,所以不建议使用 scanf 输入 string 类型字符串
输出
cout
<iostream>
stringstream
<sstream>- 能够灵活的处理字符串,具有和输入输出流相似的接口和方法
stringstream s;
string name = "A";
int age = 13;
double height = 1.2;
string status = "is a dog";
s << "Name: " << name << ", Age: " << age << ", Height: " << height << ", Status: " << status;
string str = s.str();
// 还能实现字符串转数字
string str = "7";
stringstream ss;
ss << str;
int num;
ss >> num;
printf()
<stdio.h>- 输出 string 对象中的字符串,可以使用 string 的成员函数 c_str()
string a = "test";
printf("%s",a.c_str());
关闭标准流同步
- 由于同步流机制和类型检查机制,
scanf()和printf()输入输出的效率显著优于cin和cout - 提高速度
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
// 较老版本不支持 nullptr,可以使用:
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
头文件
万能头文件
#include <bits/stdc++.h>
常用头文件
#include <algorithm> //通用算法,max/min/swap/reverse
#include <bitset>
#include <cstdio>
#include <cstdlib>
#include <cstring> //memset
#include <deque>
#include <map>
#include <iostream>
#include <queue>
#include <set>
#include <sstream> //基于字符串的流
#include <stack>
#include <string>
#include <vector>
字符串
string <—> number
string —> number
int a = 1234567;
string str = to_string(a);
number —> stringS
string str = '1234567';
int a = stoi(str);
// 或者用前文提到的 stringstream
string <—> char*
string —> char*
string str= "test";
const char *p = str.c_str();
char* —> string
char a[10] = "hello";
char *b = a;
string c = b;
算法备忘录系列目录:
第一节 算法备忘录·基础算法
第二节 算法备忘录·数据结构
第三节 算法备忘录·杂项
第四节 算法备忘录·搜索与图论
第五节 算法备忘录·数学知识
第六节 算法备忘录·动态规划
第七节 算法备忘录·贪心
第八节 算法备忘录·时空复杂度分析
第九节 算法备忘录·杂项
算法备忘录·杂项
https://justloseit.top/算法备忘录·杂项/