万能头文件
#include <bits/stdc++.h>
using namespace std;
using namespace std;
Map基本操作
ma[ ]:访问map中的元素,若该元素不存在,将创建一个新元素并将该元素映射到值类型的初始值上(对于int类型,初始值为0)ma.size():返回map中元素个数ma.count(element):若元素element存在map中返回1,否则返回0ma.clear():清空mapma.lower_bound():返回键值大于等于给定元素的第一个位置
迭代器使用
map<string, int>::iterator it; // 声明迭代器it
// 输出键值对
cout << it->first << ":" << it->second << endl;
// 输出键值对
cout << it->first << ":" << it->second << endl;
删除操作
ma.erase(it):删除it指向的元素ma.erase(key):删除指定键的元素ma.erase(it, ma.end()):删除从it开始到结尾的所有元素
二分查找函数
lower_bound(first, last, val):返回非递减序列[first, last)中第一个大于等于val的位置,如果所有元素都小于val,则返回last的位置upper_bound(first, last, val):返回非递减序列[first, last)中第一个大于val的位置,如果所有元素都小于等于val,则返回last的位置binary_search(first, last, val):在序列中进行二分查找,若在序列中找到值val则返回True,否则返回False
去重函数
unique(a.begin(), a.end()):去除相邻的重复元素(只保留一个)注意:对于无序序列,需要先用sort进行排序,才能正确使用此函数。
// 使用示例
vector<int> vec = {1, 2, 2, 3, 3, 3, 4, 4, 5};
// 先排序(如果无序)
sort(vec.begin(), vec.end());
// 使用unique去重
auto last = unique(vec.begin(), vec.end());
// 删除重复元素
vec.erase(last, vec.end());
// 现在vec包含: {1, 2, 3, 4, 5}
vector<int> vec = {1, 2, 2, 3, 3, 3, 4, 4, 5};
// 先排序(如果无序)
sort(vec.begin(), vec.end());
// 使用unique去重
auto last = unique(vec.begin(), vec.end());
// 删除重复元素
vec.erase(last, vec.end());
// 现在vec包含: {1, 2, 3, 4, 5}
文件操作
ifstream:从文件读取数据ofstream:向文件写入数据
// 文件读取示例
#include <fstream>
ifstream infile("input.txt");
int num;
while (infile >> num) {
// 处理读取的数据
}
infile.close();
// 文件写入示例
ofstream outfile("output.txt");
outfile << "Hello, World!" << endl;
outfile.close();
#include <fstream>
ifstream infile("input.txt");
int num;
while (infile >> num) {
// 处理读取的数据
}
infile.close();
// 文件写入示例
ofstream outfile("output.txt");
outfile << "Hello, World!" << endl;
outfile.close();
字符串操作
count(s.begin(), s.end(), '0'):查找字符串中字符'0'的个数s.insert(pos, s2):在s下标为pos的位置插入字符串s2s.erase(pos, len):删除s中下标为pos开始的len个字符s.substr(pos, len):截取s中下标为pos起的len个字符s.find(s2, pos):在s中以pos位置起查找s2第一次出现的位置getline(cin, s):输入字符串s(包含空格)s.length():获取字符串s的长度reverse(s.begin(), s.end()):翻转字符串s
// 使用示例
string s = "hello world";
string s2 = "C++";
s.insert(6, s2); // s变为 "hello C++world"
s.erase(5, 4); // 删除从下标5开始的4个字符
string sub = s.substr(0, 5); // sub = "hello"
int pos = s.find("C++", 0); // 返回第一次出现的位置
getline(cin, s); // 可以读取带空格的整行
int len = s.length();
reverse(s.begin(), s.end()); // 翻转字符串
string s = "hello world";
string s2 = "C++";
s.insert(6, s2); // s变为 "hello C++world"
s.erase(5, 4); // 删除从下标5开始的4个字符
string sub = s.substr(0, 5); // sub = "hello"
int pos = s.find("C++", 0); // 返回第一次出现的位置
getline(cin, s); // 可以读取带空格的整行
int len = s.length();
reverse(s.begin(), s.end()); // 翻转字符串
集合操作
set<int> a:新建一个整数集合aa.insert(b):在集合a中插入元素ba.size():返回集合a的元素个数a.clear():删除集合a的所有元素
// 使用示例
set<int> a;
a.insert(5);
a.insert(3);
a.insert(8);
a.insert(3); // 重复元素不会被插入
cout << "集合大小: " << a.size() << endl; // 输出 3
a.clear(); // 清空集合
set<int> a;
a.insert(5);
a.insert(3);
a.insert(8);
a.insert(3); // 重复元素不会被插入
cout << "集合大小: " << a.size() << endl; // 输出 3
a.clear(); // 清空集合
杂学笔记
next_permutation(a, a+n):对数组a的前n个元素进行全排列(按字典序生成下一个排列)
// 使用示例
int a[] = {1, 2, 3};
int n = 3;
do {
for(int i = 0; i < n; i++) cout << a[i] << " ";
cout << endl;
} while(next_permutation(a, a+n));
// 输出所有排列
int a[] = {1, 2, 3};
int n = 3;
do {
for(int i = 0; i < n; i++) cout << a[i] << " ";
cout << endl;
} while(next_permutation(a, a+n));
// 输出所有排列
DFS深度优先搜索
// 模板一
void dfs(当前状态) {
if(到达终点) { // 递归边界:找到一个解
记录结果;
return;
}
for(所有可能的选择) { // 遍历所有分支
if(选择合法) {
标记当前选择;
dfs(下一层状态);
撤销标记;
}
}
}
// 模板二
int search(int k) {
if(到目的地) 输出解;
else
for(int i = 1; i <= 算符总数; i++)
if(满足条件) {
保存结果;
search(k+1);
恢复:保存结果之前的状态 // 回溯一步
}
}
void dfs(当前状态) {
if(到达终点) { // 递归边界:找到一个解
记录结果;
return;
}
for(所有可能的选择) { // 遍历所有分支
if(选择合法) {
标记当前选择;
dfs(下一层状态);
撤销标记;
}
}
}
// 模板二
int search(int k) {
if(到目的地) 输出解;
else
for(int i = 1; i <= 算符总数; i++)
if(满足条件) {
保存结果;
search(k+1);
恢复:保存结果之前的状态 // 回溯一步
}
}
📋 更新日志 (2026-05-24) + 动效版本
✨ 新增动效与交互
- 页面入场动画:整体淡入 + 轻微放大,柔和登场。
- 卡片悬浮特效:鼠标悬停时右移、放大、加阴影,并带有光泽扫过效果。
- 代码块呼吸光效:柔和脉冲阴影,深浅模式自适应。
- 按钮水波纹点击效果:点击主题切换按钮出现扩散波纹。
- 标题下划线动画:鼠标悬停章节时标题下划线平滑展开。
- 每个笔记模块渐进上浮:错落有致的滑入效果。
- 深色/浅色过渡:所有元素颜色、阴影切换平滑流畅。
- 定制滚动条:更贴合主题配色。
📝 笔记内容(完整)
- 万能头文件、Map全套操作、迭代器、删除、二分查找、去重函数。
- 文件操作、字符串扩展操作(insert, erase, substr, find, getline, length, reverse)。
- 集合操作、next_permutation 全排列、DFS 双模板。
- 修正 binary_search 拼写错误,增加重要注意提示。
🎨 浅色模式全面优化(最新)
- 重新设计浅色主题配色:柔和渐变背景、舒适文字对比、清新卡片样式。
- 优化代码块行内背景与文字颜色,提升可读性。
- 统一交互色为优雅蓝色(#3b82f6),悬浮光效更细腻。
- 深浅模式切换完全跟随系统,同时保留手动按钮。
最后更新时间:2026年5月24日 | My Note,LTD