- 博客(11)
- 问答 (13)
- 收藏
- 关注
原创 STL多种容器和算法的时间复杂
STL(Standard Template Library)提供了多种容器和算法,每种操作的时间复杂度不同。以下是主要容器及其常用操作的时间复杂度分析。根据需求选择合适容器可显著优化性能!
2025-06-10 19:59:22
884
原创 深入理解C++中的元组(tuple):现代C++的多面手
摘要:本文介绍了C++11中的std::tuple(元组),它是一种存储不同类型元素的固定大小容器。文章详细讲解了元组的创建方法(直接构造、make_tuple、C++17类模板推导)、元素访问方式(std::get、结构化绑定、std::tie)以及高级特性(比较操作、元组拼接、多值返回)。通过示例代码展示了tuple在实际编程中的应用,帮助开发者编写更现代、高效的C++代码。
2025-06-06 21:59:57
221
原创 快速排序算法的证明与边界分析
本文介绍了快速排序算法的基本原理和实现方法。快排采用分治策略,通过选取基准元素将数组分为两部分递归排序。文章提供了以j为分界的快排模板代码,并解释了分区和递归处理的过程。同时通过两道例题展示了快排的应用:一道基础排序题演示了标准快排实现;另一道求第k小元素的题目展示了如何用分治思想在O(n)时间复杂度内解决问题。代码示例包含详细注释,帮助理解快排的核心思想和具体实现细节。
2025-06-01 12:23:02
374
原创 c++集合的基础知识(有例题)
本文对比了C++与Python中集合的实现与特性。C++提供有序的set(红黑树)和无序的unordered_set(哈希表),前者操作时间复杂度为O(log n),后者平均O(1)。文章详细介绍了unordered_set的创建、初始化方法及常用操作,包括插入、查找、删除元素等。针对自定义类型,需提供哈希函数和比较函数。Python集合基于哈希表实现,具有类似特性但语法更简洁。通过对比,开发者可根据需求选择合适实现,有序场景用set,快速查找用unordered_set。
2025-05-28 17:31:09
176
原创 2025年计算机二级python考后心得
计算机二级的含金量确实比较低的,比如说考试内容滞后,题库重复率高,存在"背题过考"现象(我昨天晚上看的题都考到了几道😅)企业招聘几乎不看此证书(相比下,计算机专业更认PAT/CSP认证)。今天刚刚考完计算机二级,我是大一萌新第一次参加这个考试,还记得上学期刚入学时,还有培训机构来班里宣传,说什么"编程语言类难度爆表,建议报WPS班更容易过"。虽然考试很简单但是考试的过程还是很严格的,先要扫脸进考场,再由监考老师检查随身物品,检查了几次身份证和准考证,考试的威严感还是很足的。
2025-03-29 22:26:11
482
2
原创 C++中的std::greater:理解与实用指南
在C++标准库中,std::greater是一个非常有用的函数对象(functor),它提供了一种简单的方式来实现"大于"比较操作。这篇博客将深入探讨std::greater的工作原理、使用场景以及在实际编程中的应用技巧。
2025-03-29 21:23:44
327
原创 手写滑动窗口(AcWing 154. 滑动窗口)
当 n 和 k 都很大时,例如 n = 10^6,k = 10^5,暴力解法就会非常耗时。但是正常比赛当中我们不可能全部都手搓,这里就要用到STL里面的deque了。我们用一共数组q[N]来模拟队,front来表示队头,tail来表示队尾。使用单调队的方法可以让我们更快的找到窗口的最小值和最大值。为了降低时间复杂度,我们需要一种更高效的方法。
2025-02-23 21:47:27
371
原创 C++ STL 中的 list 容器:用法与实现详解
链表作为一种动态结构,能够根据需要的在运行时灵活的插入、删除数据元素,而且它对储存单元没有过高的要求,不一定要求核内存是连续的、整块单元。相对于数组、字符串,由于 链表存储不连续,因此不能实现对它的随机访问。在链表中查找、定位数据元素效率较低。无论如何,在很多问题中,链表还是能大展身手的,并高效的解决问题。链表(Linked List)是一种线性数据结构,由一系列**节点(Node)**组成。每个节点包含两个部分:数据域:存储实际的数据。指针域:存储指向下一个节点(或上一个节点)的地址。
2025-02-21 23:32:06
1579
1
原创 STL里面的vector容器
vector作为序列容器,简化了数组的使用,除了保留c++的数组优点外,还提供了方便而灵活的函数,不少算法也可以运用到vector中。值得注意的是vector v4(v1.begin(), v1.end());这种使用迭代器范围来初始化 vector 的方式,在一定条件下可以用于将其他序列容器转化为vector。(v.begin()是获取第一个元素位置,v.end()是获取最后一个元素的位置)先来介绍一下vector的构造和赋值吧。在熟悉vector的构造和赋值后我们再来学习vector的增加和删除。
2025-02-03 16:35:12
582
2
空空如也
python raise
2022-09-24
html动画相关问题
2022-04-03
auto.js脚本引擎相关问题
2022-01-27
Python中GUI相关问题
2021-07-22
python中requests相关问题
2021-08-04
Python中类的相关问题
2021-07-19
Python中GUI相关问题
2021-07-17
Python中GUI相关问题
2021-07-16
Python中GUI相关问题
2021-07-15
python中类的相关问题
2021-07-08
python代码往回走
2021-07-04
python中的for套for问题
2021-07-07
python中类的相关问题
2021-07-05
python中的类使用方法
2021-07-05
TA创建的收藏夹 TA关注的收藏夹
TA关注的人