当前位置: 首页 > news >正文

c++笔记

下面给你整理一份 Markdown 格式的 C++ 竞赛速成笔记,可以直接复制到 Typora / VSCode 等编辑器里使用,非常清晰易读。


📘 C++ 竞赛速成笔记(Markdown 版)


#️⃣ 目录

  • 万能头文件
  • 输入与输出
  • 读取整行与分割
  • 数组与容器
  • 排序 sort
  • 自定义排序 cmp
  • map / unordered_map
  • set / unordered_set
  • 优先队列(堆)
  • 字符串与数字转换
  • 字符判断与转换
  • 前缀和模板
  • EOF 输入处理
  • 快速 IO
  • 比赛通用模板

📌 万能头文件

#include <bits/stdc++.h>
using namespace std;

📌 输入与输出

基本类型

int a;
long long b;
string s;cin >> a >> b >> s;
cout << a << " " << b << " " << s << "\n";

📌 读取整行与分割

读取一整行(包括空格)

string line;
getline(cin, line);

如果前面用过 cin >>

cin.ignore();
getline(cin, line);

按空格拆分字符串

string line;
getline(cin, line);stringstream ss(line);
string token;
vector<string> parts;while (ss >> token) {parts.push_back(token);
}

📌 数组与容器

vector 一维数组

vector<int> v(n);
for (int i = 0; i < n; i++)cin >> v[i];

vector 二维数组

vector<vector<int>> a(n, vector<int>(m));

📌 排序 sort

从小到大

sort(v.begin(), v.end());

从大到小

sort(v.begin(), v.end(), greater<int>());

📌 自定义排序 cmp

排结构体

struct Node {int x, y;
};bool cmp(const Node &a, const Node &b) {if (a.x != b.x) return a.x < b.x;return a.y > b.y;
}sort(v.begin(), v.end(), cmp);

📌 map / unordered_map

统计频率

unordered_map<string, int> mp;
mp["hello"]++;

📌 set / unordered_set

unordered_set<int> st;
st.insert(10);if (st.count(10)) {cout << "exists";
}

📌 优先队列(堆)

最大堆

priority_queue<int> pq;
pq.push(5);
pq.push(10);
cout << pq.top(); // 10

最小堆

priority_queue<int, vector<int>, greater<int>> pq;

📌 字符串与数字转换

int x = stoi("123");
long long y = stoll("12345");
string s = to_string(10086);

📌 字符判断与转换

isdigit(c);
isalpha(c);
islower(c);
isupper(c);
tolower(c);
toupper(c);

📌 前缀和模板(重要)

一维前缀和

vector<int> pre(n+1, 0);
for (int i = 1; i <= n; i++)pre[i] = pre[i-1] + a[i];

区间和查询

int sum = pre[r] - pre[l-1];

📌 EOF 输入处理(不确定行数时)

按词读取

string s;
while (cin >> s) {// process
}

按行读取

string line;
while (getline(cin, line)) {// process
}

📌 快速 IO

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

🧩 比赛通用模板(直接用)

#include <bits/stdc++.h>
using namespace std;int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int n;cin >> n;vector<int> v(n);for (int i = 0; i < n; i++)cin >> v[i];sort(v.begin(), v.end());for (int x : v)cout << x << " ";cout << "\n";return 0;
}

🎁 如果你愿意,我可以给你:

✔ 字符串处理专题模板

✔ 排序 + 自定义 cmp 专题

✔ BFS / DFS 专题

✔ DP 常用模板(背就能用)

✔ 贪心常见套路总结

只要告诉我你比赛偏什么类型,我会直接给你针对性模板

http://www.jsqmd.com/news/64272/

相关文章:

  • 别再发愁!对比多款后锁定这6个型号,挑选高中学习机,不花冤枉钱
  • [UVA1316 Supermarket]
  • 使用typora来写md文件时配置文件存放图片的路径
  • 靠谱厂房拆迁法律机构排行榜 2026:专业解析与高性价比解决方案
  • 滥用ESC10:通过注册表配置不当实现权限提升的ADCS攻击分析
  • [NOI2015 程序自动分析]
  • 【基础】Unity着色器网格和计算对象介绍
  • 【基础】Unity着色器网格和计算对象介绍
  • 基于大内容的保险数据管理与可视化分析平台
  • 深入解析:C++ 闭散式和开散式的模拟实现
  • 基于先验地图的无人机路径规划
  • 首单半价对话框的实现
  • Anchor宽高比
  • SAM3模型来了,手把手带你运行SAM3模型代码,SAM3模型初探!
  • 从可优化到可进化:企业智能化的本质、边界与治理
  • SGD优化器贯穿Faster R-CNN的全模型
  • 线段树学习笔记
  • Anchor尺寸
  • 西门子S7-1200与施耐德Altivar320通讯 工业自动化场景的总线协议转换方案
  • 短剧小程序 2025 核心痛点分析:内容、工艺与合规的三重困境
  • 「C++」vector的利用及接口模拟详解
  • 「Java EE开发指南」如何在MyEclipse中构建EJB 2 Session Bean?(一)
  • Android开发 Jetpack_Compose DatePickerBottomSheet 滚轮日历选择器对话框
  • 代码资源空间调整:当前代码与资源的总大小超过FLASH的大小,需要更大的FLASH
  • 亚马逊发起新的Alexa Prize SimBot挑战
  • 跨国数据传输解决方案为企业提供安全与合规保障
  • 数据结构(18) - 实践
  • 题解:qoj5411 杏仁
  • 游记:CSP2025
  • CSP2025 游记