
C++语言入门以及基础算法
文章平均质量分 77
《C++语言入门与基础数据结构》是为编程初学者和进阶学习者打造的实用教程,系统讲解C++核心语法、面向对象编程及基础数据结构(数组、链表、栈、队列等)。专栏结合清晰示例与高频面试题剖析,每章附高质量练习题+详细解答,帮助读者巩固知识并提升实战能力。
Гений.大天才
代码为笔,绘就数字世界的宏图;安全为盾,守护网络空间的安宁。我以热爱为刃,以专注为锋,无畏挑战,勇攀高峰!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
编程第一步:编译器的选择
编程要什么:脑子?不止:还有编译器,我最经常使用VS-Code(Visual Studio Code)那么我们需要安装它下载(绿色真无毒纯净版)原创 2025-05-04 19:38:04 · 304 阅读 · 0 评论 -
VS-Code扩展
相信很多人看到了前一篇文章就直接使用了,打开后确实一脸懵逼,那么我们就来教大家怎么安装首先,点开:然后在这里:输入我在后面用!!包裹起来的文字。原创 2025-05-04 20:30:19 · 571 阅读 · 0 评论 -
C++语言入门————认识C++
现在你认识了一个最基本的C++程序结构,我会在下一篇开始正式讲C++了。原创 2025-05-08 22:29:18 · 208 阅读 · 0 评论 -
C++算法进阶————前缀和、差分与离散化
2016 年我第一次在 NOI 冬令营听到“前缀和能把 O(n) 区间和变成 O(1)”时,内心毫无波澜——直到 2018 年 ICPC 西安赛区被一道“二维前缀和+离散化+离线处理”的 H 题教育,全队 3 小时只交了一发 Wrong Answer。2020 年工作后,我发现工程代码里同样到处是“前缀和/差分/离散化”的影子:于是有了这篇横跨竞赛、工程、科研的“超长指南”。目标只有一个:把三大廉价神器写到极致。0.3.2 macOS (Homebrew)0.3.3 Ubuntu / Debian原创 2025-08-03 12:04:30 · 12 阅读 · 0 评论 -
C++数据结构————图
恭喜,至此你已掌握从DFS到网络流、从模板元编程到工业级调优的完整链路。阅读《Network Flows》——Ahuja;研究Google OR-Tools源码;参与开源项目(如OSRM、S2 Geometry);探索图神经网络(GNN)的C++实现(DGL C++后端)。图论如星空,愿你在C++的浩瀚宇宙中,继续远航。原创 2025-07-24 11:57:11 · 175 阅读 · 0 评论 -
C++数据结构————集合
原创 2025-07-19 23:20:03 · 85 阅读 · 0 评论 -
C++数据结构————二叉树
本文将用大约 2 万字的篇幅,从“零”开始,把 C++ 二叉树的所有常见形态、常见算法、常见坑点与常见优化一次性讲透。限于篇幅,部分代码(如红黑树、无锁并发树)无法展开描述。• 完全二叉树(Complete BT):除最后一层外,其余层全满,且最后一层从左到右连续。• 完美二叉树(Perfect BT):所有内部节点都有 2 子,且所有叶子在同一深度。• 二叉搜索树(BST):左子树所有节点值 < 根值 < 右子树所有节点值。• 满二叉树(Full BT):除叶子外,所有节点都有 2 个子节点。原创 2025-07-19 12:57:58 · 254 阅读 · 0 评论 -
C++数据结构————线性表
线性表(Linear List)是 n(n≥0)个数据元素的有限序列,记作其逻辑特征为“除首元素无前驱、末元素无后继外,其余每个元素有且仅有一个直接前驱和一个直接后继顺序存储:数组链式存储:链表(单向、双向、循环、静态)C++ 作为强类型、零开销抽象语言,既能通过裸指针与手动内存管理实现底层链表,又能借助模板元编程提供类型安全、泛型化的容器。本章将循序渐进,手写所有经典数据结构,并对比 STL 实现,最终给出性能测试与最佳实践。本文从线性表的理论出发,手写并剖析了 7 种经典实现,涵盖了。原创 2025-07-19 12:47:54 · 272 阅读 · 0 评论 -
C++语言入门————基本运算
基本运算符优先级(、)*、/、%+、-我会在下一篇将更多的运算符和逻辑运算符。原创 2025-05-10 17:01:55 · 232 阅读 · 0 评论 -
C++语言入门————逻辑运算符
异或运算符()是C++中的一种位运算符,并不算一种逻辑运算符,但是在这里也就顺带讲了。用于对两个操作数的每一位进行异或操作。异或的规则是:如果两个位相同(0和0,或1和1),结果为0。如果两个位不同(0和1,或1和0),结果为1。原创 2025-05-12 22:04:21 · 292 阅读 · 0 评论 -
C++语言入门————分支语句
分支语句是C++编程中控制程序流程的重要工具。通过ifelse ifelse和switch语句,程序可以根据不同的条件执行不同的代码块。掌握这些语句的使用,能够编写出更加灵活和功能强大的程序。原创 2025-05-12 22:28:01 · 236 阅读 · 0 评论 -
C++语言入门————循环语句
循环语句是C++编程中不可或缺的一部分,它们让代码变得更加灵活和强大。无论是for循环、while循环还是do-while循环,每种循环都有其独特的用途和优势。掌握这些循环语句,就像拥有了C++编程中的“永动机”,让你的代码充满活力和效率。原创 2025-05-17 20:56:50 · 203 阅读 · 0 评论 -
C++语言入门————数组
在C++的世界里,数组就像是一群“多胞胎”。它们长得一模一样,排排坐,吃果果。你可以通过一个名字来呼唤它们,但每个小家伙都有自己的编号(索引),从0开始,就像排队买奶茶一样,谁先来谁先拿。原创 2025-05-17 21:30:59 · 179 阅读 · 0 评论 -
C++语言入门————字符数组
字符数组是C++中处理文本的基础工具,虽然它看起来简单,但功能却非常强大。通过掌握字符数组的使用,可以更好地处理字符串,编写出高效、可靠的代码。希望这篇博客能帮助你更好地理解和运用字符数组,让你的C++编程之旅更加顺畅!原创 2025-05-17 22:55:52 · 167 阅读 · 0 评论 -
C++语言入门————自定义函数
在C++中,自定义函数的基本结构就像是一道菜的配方。你需要明确这道菜的“原料”(参数)和“烹饪方法”(函数体),最后还要知道它能“端出”什么(返回值)。//定义一个简单的函数,计算两个数的和return a+b;return 0;在这个例子中,add函数就像是一个简单的加法器,输入两个整数,输出它们的和。运行这个程序,你会看到屏幕上显示“3+4=7”,是不是很简单?通过自定义函数,你可以让C++代码变得更加模块化、可读性更强,甚至还能加入一些幽默元素。原创 2025-05-18 11:06:27 · 270 阅读 · 0 评论 -
C++语言入门————结构体
定义一个结构体就像设计一个盒子。你可以决定这个盒子里装什么,怎么装。int age;这里,Personnameageheight和weight。每个“积木”都有自己的类型,name是字符串,age是整数,height和weight是浮点数。C++的结构体就像是一个“百宝箱”,可以装下各种类型的数据,甚至还可以装下函数。它让数据管理变得简单、有序,是C++程序员不可或缺的工具。无论是打包一个人的信息,还是管理一个家庭的数据,结构体都能轻松应对。原创 2025-05-18 11:13:49 · 128 阅读 · 0 评论 -
C++语言入门————指针
指针是C++中的一把双刃剑,它既强大又危险。掌握指针,就像是掌握了一门寻宝的艺术,虽然有时会让人感到困惑,但一旦熟练,就能在内存的海洋中自由穿梭,找到你想要的“宝藏”。所以,拿起你的“藏宝图”,开始你的寻宝之旅吧!原创 2025-05-18 11:23:37 · 250 阅读 · 0 评论 -
C++语言入门————文件操作与重定向
C++ 提供了强大的文件操作功能,允许程序读取和写入文件。通过fstream库,可以方便地打开、读取和写入文件。文件重定向则可以通过命令行参数或程序内部的文件操作实现,使得程序的输入输出可以灵活地重定向到文件。掌握这些技术,可以大大提高程序的灵活性和实用性。原创 2025-05-18 11:32:23 · 202 阅读 · 0 评论 -
C++语言入门————穷举
C++ 穷举,就像编程世界里的一股 “泥石流”,看似 “笨拙”,实则有着独特的魅力。它让计算机充分发挥了自己的优势,把那些看似复杂的问题变得简单。虽然有时候会遇到效率问题,但通过优化,它也能变得很聪明。对于初学者来说,穷举是个很好的起点。它能让你更直观地理解编程的逻辑,原创 2025-05-21 21:44:32 · 377 阅读 · 0 评论 -
C++语言入门————多维数组
想象一下,你有一个书架,书架上有许多层,每一层都摆放着一排书。这个书架就是一个二维数组。而如果这些书架又摆放在一个房间里,房间里的每个角落都有一个书架,那么这个房间就是一个三维数组。以此类推,多维数组就是这样一个可以存储多层数据的结构。在C++中,多维数组是数组的扩展,它允许你在一个变量中存储多个维度的数据。最常见的多维数组是二维数组,就像一个表格一样,有行和列。三维数组则像是一个立方体,有长、宽和高。当然,你还可以有更多维度的数组,但通常情况下,二维和三维数组就已经足够我们使用了。原创 2025-05-21 22:21:35 · 53 阅读 · 0 评论 -
C++语言入门————字符串
当我们在程序中拿到一个字符串时,首先可能会好奇:“这个字符串有多长呀?”别担心,std::string 提供了一个很方便的成员函数 length()(或者 size(),它们的效果是一样的),可以帮我们快速获取字符串的长度。std::cout << "字符串的长度是:" << len << std::endl;字符串的长度是:5知道了字符串的长度,我们可能还想看看字符串里的每个字符。std::string 允许我们通过下标运算符 [] 来访问字符串中的字符,就像访问数组元素一样。原创 2025-05-22 22:16:43 · 243 阅读 · 0 评论 -
C++语言入门————进制转换
除了使用 C++ 标准库提供的函数外,我们还可以自己编写一些高级的进制转换函数,以满足更复杂的需求。通过今天的探索,我们深入了解了 C++ 进制转换的各个方面,从基本的进制转换函数到高级的自定义函数,从实际应用案例到性能优化技巧。进制转换就像是数字的“变形记”,通过 C++ 的魔法,数字们可以在不同进制之间自由穿梭,展现出强大的灵活性和多样性。在我们的编程旅程中,无论是处理网络数据、文件内容,还是进行数学计算,进制转换都是一项非常重要的技能。原创 2025-05-23 20:45:47 · 219 阅读 · 0 评论 -
C++语言入门————高精度计算
通过以上的方法,我们可以用C++标准库中的和来实现高精度计算。虽然这些方法比直接使用内置数据类型要复杂一些,但它们可以处理任意长度的数字,非常适合需要高精度计算的场景。希望这些简单的“魔法咒语”能帮助你在编程中轻松应对高精度计算的挑战!下次当你遇到需要高精度计算的问题时,不妨试试这些方法,让数字“飞”起来吧!原创 2025-05-25 20:40:41 · 208 阅读 · 0 评论 -
C++基础算法————递推
递推是一种通过已知的初始条件,利用特定的关系式逐步推导出其他结果的方法。在数学中,递推关系式被广泛用于定义数列、解决组合问题等。在编程中,递推同样是一种重要的算法思想,它可以帮助我们解决那些具有明确递推关系的问题。例如,计算斐波那契数列就是一个典型的递推问题。斐波那契数列的定义是:(F(0) = 0),(F(1) = 1),对于 (n \geq 2),有 (F(n) = F(n - 1) + F(n - 2))。原创 2025-05-26 22:41:39 · 460 阅读 · 0 评论 -
C++基础算法————递归
递归是一种函数调用自身的方法。在数学中,递归被用来定义数列、解决组合问题等。在编程中,递归同样是一种重要的算法思想,它可以帮助我们解决那些具有明确递归关系的问题。例如,计算阶乘、斐波那契数列等都可以通过递归实现。递归是一种重要的编程思想,在解决各种复杂问题时发挥着关键作用。通过递归,我们可以从已知的初始条件逐步推导出其他结果,从而解决具有明确递归关系的问题。在 C++ 中,递归通常是通过函数调用自身来实现的,它可以用于计算数列、解决动态规划问题、优化递归算法等。原创 2025-05-31 11:10:31 · 175 阅读 · 0 评论 -
C++基础算法————贪心
贪心算法是一种在每一步选择中都采取当前状态下最优(即最有利)的选择,从而希望导致结果是全局最优的算法。贪心算法的核心思想是局部最优解可以构成全局最优解。然而,这种思想并不总是成立,因此贪心算法并不适用于所有问题。贪心算法是一种重要的编程思想,在解决各种优化问题时发挥着关键作用。通过贪心算法,我们可以从已知的初始条件逐步推导出其他结果,从而解决具有明确贪心选择性质的问题。在 C++ 中,贪心算法通常通过选择当前最优的解来实现,它可以用于计算数列、解决动态规划问题、优化递归算法等。原创 2025-05-31 11:36:03 · 229 阅读 · 0 评论 -
C++基础算法————深度优先搜索(DFS)
深度优先搜索(DFS)是一种强大的搜索算法,广泛应用于图论、路径搜索、组合问题等领域。通过递归或迭代实现,DFS可以有效地遍历和搜索图或树结构。然而,DFS也存在一些局限性,如栈溢出和搜索空间爆炸。通过剪枝、记忆化搜索和启发式搜索等优化方法,可以提高DFS的效率和适用性。原创 2025-05-31 18:02:51 · 206 阅读 · 0 评论 -
C++基础算法————广度优先搜索(BFS)
广度优先搜索是一种用于遍历或搜索图或树等数据结构的算法。它的核心思想是从一个起始节点开始,逐层遍历节点,先访问离起始节点最近的节点,再逐步扩展到更远的节点。这种搜索方式类似于在平静的水面上投入一颗石子,水波会以石子落水处为中心,一层一层向外扩散。广度优先搜索(BFS)是一种非常重要的搜索算法,适用于多种应用场景,如最短路径问题、连通分量、二叉树层次遍历、迷宫问题和社交网络中的最短路径等。原创 2025-06-01 17:10:49 · 232 阅读 · 0 评论 -
C++基础算法————动态规划(DP)
动态规划是一种算法策略,它主要用于解决具有重叠子问题和最优子结构特性的问题。听起来有点抽象,我们来具体解释一下。重叠子问题假设我们有一个问题,它可以通过分解成多个子问题来解决。如果这些子问题在求解过程中被重复计算多次,那么我们就称这个问题具有重叠子问题的特性。例如,在计算斐波那契数列时,第 n 项可以通过第 n - 1 项和第 n - 2 项相加得到。当我们用递归方法计算第 5 项时,会先计算第 4 项和第 3 项,而计算第 4 项又会计算第 3 项和第 2 项。在这个过程中,第 3 项就被重复计算了。原创 2025-06-02 11:36:33 · 37 阅读 · 0 评论 -
C++基础算法————排序
排序算法是计算机科学中的一个重要课题,不同的排序算法在效率、复杂度和适用场景上有所不同。本文详细介绍了多种常见的排序算法,包括冒泡排序、选择排序、插入排序、归并排序、快速排序、堆排序、希尔排序、计数排序、桶排序和基数排序。通过大量详细的代码示例和生动的解释,希望你能够全面掌握这些排序算法。对于初学者来说,理解这些排序算法的基本原理和实现方法是学习编程的重要一步。通过实践和练习,你将逐渐掌握这些算法的精髓,并能够在实际编程中灵活运用。原创 2025-06-02 12:30:28 · 67 阅读 · 0 评论 -
C++基础算法————二分查找
类似地,我们也可以找到最后一个小于等于目标值的元素。例如,数组中,目标值为6,我们需要找到最后一个小于等于6的元素5。二分查找是一种高效的查找算法,适用于有序数组或列表。通过不断将查找范围缩小一半,二分查找能够在对数时间内找到目标值。本文详细介绍了二分查找的基本原理、实现方法、应用场景以及优化技巧,并通过大量代码示例帮助初学者深入理解。希望本文能够帮助读者更好地掌握二分查找算法,并在实际项目中灵活应用。原创 2025-06-14 22:10:43 · 317 阅读 · 0 评论 -
C++基础算法————并查集
并查集是一种树形的数据结构,用于处理一些不相交集合的合并与查询操作。查找(Find):确定一个元素所属的集合。合并(Union):将两个元素所在的集合合并为一个集合。原创 2025-06-20 22:16:19 · 211 阅读 · 0 评论