vector是动态数组,当空间不足时需要扩容。其扩容机制通常是重新申请一块更大的内存(一般是原容量的1.5倍或2倍),然后将原数据拷贝到新内存,最后释放原内存。...
前面我们解释过,string类比STL诞生要早几年,STL很多容器和string都具有相似性,但是string的很多接口非常鸡肋,而且数量多——一百多个接口,博...
假设我们按之前的经验,使用dp[i]表示从0到i能偷窃到的最高金额。并试着写出状态转移方程。而我们只知道dp[i-1]是0到i-1能偷窃的最高金...
0表示平原,正数表示高地,负数表示凹地,那么当洪水来临时这些凹地会被优先灌满。而我们要找的正是这些联通块,如:
迭代器失效不只是针对vector类,其他容器也会出现,但最底层的原因都是一样的,所以这里就以vector为例进行讲解。
专家级难度(难度系数10)的IO竞赛题目是竞赛中的终极挑战,代表了当前算法和程序设计的最高水平。这类题目不仅要求选手掌握深厚的算法理论基础,还需要具备超强的问题...
高级难度的IO竞赛题目是竞赛中的顶级挑战,也是区分顶尖选手的关键。2025年的高级难度(难度系数8-9)题目综合考察了选手的算法设计、数学建模、问题分析和代码实...
中级难度的IO竞赛题目是竞赛中的核心部分,也是选手们拉开差距的关键。2025年的中级难度(难度系数6-7)题目综合考察了选手的算法设计、数据结构应用、数学建模和...
❄专栏传送门:《C语言》、《数据结构与算法》、C/C++干货分享&学习过程记录、Linux操作系统编程详解、笔试/面试常见算法:从基础到进阶
图论是数学的一个分支,它以图为研究对象,研究顶点和边组成的图形的数学理论和方法。在IO竞赛中,图论问题占据了非常重要的地位,几乎在每一场重要的竞赛中都会出现图论...
上篇我们介绍了前缀和在一维情况和二维情况下的两大基本模板,本篇将结合具体题目分析讲解,深化我们对于前缀和算法的理解运用。
上篇我们谈到vector的概念,使用,以及相关接口的具体应用,本文将对vector进行深入剖析,为读者分享其底层逻辑,讲解其核心细节。
C++ 标准模板库(STL)是现代 C++ 编程的基石,其中的容器、算法和迭代器为开发者提供了高效、灵活的数据处理工具。vector 作为 STL 中最常用的顺...
--由于vector没有重置流插入流提取,所以我们这里自己实现一个打印,其实这里的遍历打印操作是跟string差不多的,直接看代码就行。
结语:通过手写 vector,我们不仅理解了其底层的三指针模型、扩容策略和迭代器设计,更能在实际开发中规避迭代器失效、浅拷贝等陷阱。掌握这些原理,无论是使用标准...
构造一个大根堆,依次插入元素,控制容器大小为k,超过k的部分pop掉,最后大根堆中存储的就是k个最小的元素,插入到vector中
表面上,这似乎是一个简单的问题。C++ 的模板系统很灵活,std::vector<std::list<int>> 的确能直接编译通过。 但如果你只停留在这个层...
**那么在栈和队列的实现中我们该怎么样用到容量适配器来更好的实现?**栈和队列要实现一端插入和删除,我们前面学过的vector,string,这些都可以支持适配...
在学习vector之前必须了解vector文档中的相关描述;vector的介绍,这里我们挑重点的接口来进行阐述。
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。