LeetCode Logo

分享|c++运用的基本知识

57
2026.11.05
2026.11.05
发布于 河北


很多刚开始刷力扣的朋友,思路能想明白,但写 C++ 代码的时候经常忘记容器用法、语法细节,这里用文字把刷题最常用的 C++ 基础知识点一次性概括清楚,方便随时翻看。

首先是头文件和命名空间,刷题一般直接带上常用的头文件,包含输入输出、vector、字符串、各种容器、排序和数学相关库,写上 using namespace std,就不用每次都加 std:: 前缀,不过正式项目里不推荐这样写。

输入输出部分,cin 和 cout 用来读写数据,遇到数据量大的题目,一定要加上 IO 加速语句,避免超时。换行优先用单引号的 \n,效率比 endl 更高,因为 endl 每次都会刷新缓冲区,速度慢一些。

基础变量、分支和循环:C++ 支持 int 整数、double 小数、char 字符、bool 布尔这几种基础类型。判断用 if、else if、else;循环分为普通 for 循环、while 循环,还有 C++11 新增的范围 for 循环,可以直接遍历容器里的每一个元素。

vector 动态数组是刷题里用得最多的容器,可以定义一维、二维数组,支持尾部添加、删除元素,获取长度、下标访问,也可以直接清空数组。

string 字符串用来存放文本,支持字符串拼接,获取长度,按下标取单个字符,还能截取子串、查找子串,找不到目标子串会返回特殊标记 string::npos。

栈 stack 是后进先出结构,只能操作栈顶元素,可以入栈、取栈顶、出栈、判断是否为空;队列 queue 是先进先出,只能取队首元素。优先队列也就是堆,默认是大根堆,也可以改成小根堆,适合做 topK 类题目。

哈希表 unordered_map 和 map 都可以存键值对,unordered_map 无序,查找平均时间复杂度 O (1),刷题优先选它;map 是红黑树实现,内部有序,查找是 O (logn)。可以用 count 判断某个键是否存在,也可以遍历取出键和值。

集合 unordered_set 和 set 用来存放不重复的元素,支持插入元素、判断元素是否存在、删除元素。pair 是二元组,可以同时存放两个不同类型的数据,通过 first 和 second 分别访问两个值。

排序依靠 sort 函数,默认升序排列,传入 greater<int>() 可以改成降序;也可以用 lambda 表达式自定义排序规则,灵活实现复杂排序需求。

还有几个高频内置函数:max、min 取两个数的最大最小值,abs 求绝对值,sqrt 用来开平方。
评论 (2)