C++
文章平均质量分 96
欢迎来到我的C++专栏!在这里,我将与大家分享学习C++编程的经验、技巧和心得。不论你是刚接触编程的新手,还是希望深入了解C++的开发者,这里都会为你提供实用的学习资源和深入浅出的讲解。希望通过这个专栏,能帮助你更好地掌握C++的核心概念与高级应用,提升编程能力,成为更加优秀的开发者!
小米里的大麦
但行好事,莫问前程
(GitHub:huangcancan-xbc)
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【C++】Lambda 表达式
本文介绍了C++中的匿名函数(Lambda表达式)及其核心组成部分。Lambda表达式的基本形式为捕获列表 -> 返回类型 {函数体},其中捕获列表控制外部变量访问方式,参数列表与普通函数一致,返回类型通常可省略(编译器自动推断)。重点讲解了捕获列表的多种方式:[]不捕获、[x]传值、[&x]传引用、[=]传值捕获所有变量、[&]传引用捕获所有变量等。文章通过代码示例演示了Lambda表达式的参数传递、返回类型自动推导规则,以及捕获外部变量的不同方法,帮助开发者灵活运用这一特性进行高效原创 2026-01-08 10:00:00 · 779 阅读 · 0 评论 -
【C++】 STL —— 基于算法竞赛
C++ STL vector 使用指南 本文介绍了C++ STL中的vector容器,包括初始化、常用方法和注意事项。 初始化: 一维vector:vector<int> a,可指定长度和初始值 二维vector:vector<vector<int>> v行列可变,或vector<int> v[5]行固定 支持拷贝初始化vector<int> b(a) 常用方法: 访问元素:front(), back(), at() 容量操作:size(), em原创 2026-01-07 17:30:00 · 1303 阅读 · 0 评论 -
【C++】数学相关算法
本文介绍了C++中数学相关算法的关键知识点,包括数据范围与算法选择、常用数学函数和数值算法。主要内容: 算法选择指南:根据数据规模(10^9以内用int,10^18用long long)和时间复杂度(O(n!)到O(logn))提供算法选择建议表,帮助快速匹配问题与解法。 数学函数库:总结<cmath>中常用函数如sqrt、pow、abs等,说明其功能、示例和注意事项(如sqrt参数需非负)。 数值算法:列举<algorithm>和<numeric>中的实用工具,包括ma原创 2026-01-07 11:00:00 · 1093 阅读 · 0 评论 -
【C++】STL简介
STL简介:C++标准模板库核心解析 STL(标准模板库)是C++标准库的核心组件,采用泛型编程思想,通过模板技术实现数据结构与算法的高度复用。其发展经历了HP、P.J.、RW和SGI四个主要版本,其中SGI版本因高可读性和开放性成为学习典范。 STL包含六大核心组件: 容器(如vector、list) 算法(如sort、find) 迭代器(连接容器与算法) 仿函数(函数对象) 适配器(如stack、queue) 空间配置器(内存管理) STL在笔试面试和实际开发中都具有重要价值,但也存在更新缓慢、线程安全原创 2026-01-06 18:30:00 · 616 阅读 · 0 评论 -
【C++】模板初阶
本文介绍了C++模板的概念及其应用。模板分为函数模板和类模板,能够实现与数据类型无关的通用代码,提高代码复用性。函数模板通过template<typename T>定义,支持自动类型推导和显式指定类型,可用于交换变量、多类型参数处理、动态内存分配等场景。类模板则允许创建通用的类结构。模板技术解决了函数重载带来的代码重复问题,使程序更灵活高效。文章通过代码示例展示了模板在变量交换、多类型处理、类型转换等方面的具体应用,并强调了模板在提升代码可维护性和扩展性方面的重要作用。原创 2026-01-06 08:30:00 · 947 阅读 · 0 评论 -
C、C++内存管理
本文详细解析了C/C++程序的内存分布及管理机制。首先通过实例代码分析了各类变量(全局变量、静态变量、局部变量、动态分配内存等)的存储位置,包括栈、堆、数据段(静态区)和代码段(常量区)的划分标准。随后系统阐述了C/C++内存区域的四大组成部分:代码段(存储可执行指令和只读常量)、数据段(存放全局/静态变量)、堆(动态内存分配区)和栈(函数调用时的临时存储区),并详细说明了各区域的功能特点、存储内容及生命周期管理方式。文章还通过具体题目解答了sizeof与strlen的区别,并提供了完整的变量存储位置分析表原创 2026-01-05 17:00:00 · 1575 阅读 · 0 评论 -
【C/C++】区分0、NULL和nullptr
虽然他们三者区别并不大,但是,在一些特殊情况还是需要进行区分使用的。0:C/C++98中,既可表示整数值,也可表示空指针,但可能产生混淆。NULL:通过宏定义来表示空指针,虽然提高了可读性,但依然可能与整型0混淆。nullptr:C++11引入,明确表示空指针,解决了0和NULL的问题,推荐使用。在现代C++中,优先使用nullptr来表示空指针,确保代码更安全和清晰。原创 2025-01-31 16:59:59 · 1564 阅读 · 0 评论 -
【C++】类与对象(下)
匿名对象是没有名字的临时对象。当函数返回一个对象时,C++会创建一个匿名对象来接收返回值。用作表达式的操作数时,编译器会创建一个临时对象。在类型转换过程中,C++会临时创建匿名对象。特性匿名对象有名对象命名没有名称,仅为临时对象有名称,可以通过变量名访问生命周期短暂,仅在表达式或函数调用期间存在生命周期由作用域决定,作用域结束时销毁访问方式不能直接访问,通常仅在当前表达式中使用可以通过名称多次访问内存管理编译器自动管理内存,通常是栈上分配可以是栈上或堆上,需要显式管理堆对象的内存应用场景。原创 2025-01-31 16:54:34 · 1326 阅读 · 0 评论 -
【C++】类与对象(中)
内置类型(如intchar默认构造函数不会初始化内置类型成员,成员变量可能是随机值。int x;// 默认值是随机的解决方法:使用 C++11 提供的默认值:int x = 0;// 默认值为 0自定义类型(如classstruct编译器生成的默认构造函数会调用这些类型成员的默认构造函数。public:Inner()cout << "Inner 构造函数" << endl;Inner obj;// 自定义类型成员int main()Outer obj;// 实例化自定义类型成员。原创 2025-01-31 16:48:02 · 1500 阅读 · 0 评论 -
【C++】类与对象(上篇)
类的定义class是定义类的关键字。类是对象的蓝图,包含成员变量(属性)和成员函数(方法)。类定义语法// 成员变量// 成员函数class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。两种定义方式在类体中定义成员函数:这样的函数可能被编译器视为inline内联函数。类声明与定义分离:通常将类的声明放在.h文件中,成员函数的定义放在.cpp文件中。原创 2024-09-23 10:01:00 · 1669 阅读 · 50 评论 -
【C++】class详解(与struct对比讲解)
在C++中,class都struct可以用于定义自定义的数据类型,并且它们在很多方面都是相似的。然而,它们之间的主要区别体现在默认的访问权限以及编程习惯上。接下来我将详细讲解这两者的区别、实现以及常见的易错点,辅以多个代码示例。// struct 示例int a;// 默认 publicvoid show() { // 默认 public// class 示例int a;// 默认 privatepublic:void setA(int val) { // public 明确指定。原创 2024-09-23 09:57:31 · 1808 阅读 · 10 评论 -
【C++】内联函数(inline function)详解
内联函数是一种建议编译器在调用函数时,不使用普通的函数调用机制(如压栈、跳转等),而是将函数体直接嵌入到调用点。它的优点是可以减少函数调用的开销,特别是对于频繁调用的小函数。以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数调用建立栈帧的开销,以提升程序运行的效率。语法inline内联函数适合短小且频繁调用的函数,避免了宏定义的副作用,具有类型检查和调试功能。编译器有最终决策权,不一定会根据inline关键字做内联优化,特别是在函数较大或较复杂时。原创 2024-09-21 17:08:26 · 1320 阅读 · 9 评论 -
【C++】关键字auto详解
C++中的auto关键字用于自动推导变量的类型,它大大简化了代码书写,尤其是在变量类型复杂或冗长时。以下是关于auto关键字的详细讲解,包括其使用细则、不能推导的场景、以及基于循环中的应用范围。在早期C/C++中auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量,但遗憾的是一直没有人去使用它,可以思考下为什么?C++11中,标准委员会赋予了autoauto不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。原创 2024-09-21 17:07:52 · 10600 阅读 · 3 评论 -
【C++】深入理解引用:从基础到进阶详解
C++中的引用(reference)是一个非常重要的概念,它可以让你创建一个变量的别名,直接操作原始变量而不需要复制。引用在函数参数传递、返回值和效率优化等方面有广泛的应用。下面我们会一步步讲解引用的各个知识点,并搭配上由易到难的代码示例来帮助深入理解。引用的主要作用是在函数传参和返回值中减少不必要的复制操作,提高程序的运行效率。const引用是非常灵活和常用的,能够接收多种类型的对象,包括字面量和临时对象,广泛用于保证数据不被修改。注意生命周期和局部变量引用问题,避免程序指向无效内存。权限控制。原创 2024-09-17 16:12:34 · 1829 阅读 · 27 评论 -
【C/C++】程序的构建(编译)过程概述
每个语言和环境都有其特定的构建和执行流程,但大多数都会涉及某种形式的处理,将源代码转换成机器可以直接理解的形式。在编译和构建一个 C/C++ 程序的过程中,通常会经过预处理编译汇编和链接这四个阶段,这个过程被称为构建流程或者编译流程。每个阶段都负责将代码从一个形式转换为下一个形式,最终生成可执行文件。下面我会以一个简单的C/C++程序详细讲解每个阶段的具体过程。注意:编译器的工作其实非常复杂,远远不是博主我这轻描淡写的两句话就能描述清楚的!想要深入了解,还需不断钻研!!!原创 2024-09-17 12:29:18 · 2263 阅读 · 12 评论 -
【C++】函数重载
自然语言中,一个词可以有多重含义,人们可以通过上下文来判断该词真实的含义,即该词被重载了。比如:以前有一个笑话,国有两个体育项目大家根本不用看,也不用担心。一个是乒乓球,一个是男足。前者是谁也赢不了!,后者是谁也赢不了!在C++中,允许在同一作用域中声明几个功能类似的同名函数函数重载(Function Overloading)是指在同一个域中,可以定义多个函数名相同但参数列表不同的函数。是函数的一种特殊情况,编译器通过参数的类型、顺序和数量来区分不同的重载函数,而不仅仅是通过函数名。原创 2024-09-17 12:28:08 · 987 阅读 · 2 评论 -
【C++】缺省(默认)参数
参数参数(默认参数)是C++中的一个强大功能,允许简化我们的函数调用,减少重复代码。当参数的默认值满足大多数情况下的需求时,它可以大幅提升代码的吸引力,全缺省和半缺省的区别在于函数调用的灵活性与复杂性,全缺省更为简单,而半缺省提供了更多的可控性。与typedef比较中,参数注重于函数接口的设计,而typedef着眼于简化类型声明。两者都有适用的场景,但都致力于提升代码的简洁性和可维护性。合理地运用这两者,可以帮助开发者编写更高效且简洁的代码。原创 2024-09-16 12:03:03 · 1317 阅读 · 14 评论 -
【C++】深入理解作用域和命名空间:从基础到进阶详解
从C语言到现在的C++非常不容易,但是C++这块硬骨头还是要啃呐,C++也算是一门新语言,不过是和C语言有着一些渊源罢了,同样的,学习一门语言还是从最基础的开始,本文我们将详细介绍域(作用域)和命名空间的知识,接下来,车速太快,不要掉队哦!类域:类中的成员变量和函数作用范围。命名空间域:命名空间中的变量和函数作用范围。局部域:函数或代码块内部变量的作用范围。全局域:全局变量的作用范围,整个程序中有效。::域作用限定符:用于区分全局域和局部域中的同名变量。定义命名空间,需要使用到。原创 2024-09-16 12:01:58 · 2117 阅读 · 9 评论 -
【C++】认识C++(前言)
什么是C++C++发展史C++的重要性如何学习C++本贾尼C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机,20世纪80年代, 计算机界提出了OOP(object:面向对象思想,支持面向对象的程序设计语言应运而生。1982年,博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。因此:C++原创 2024-09-13 19:39:20 · 2413 阅读 · 25 评论
分享