- 博客(50)
- 收藏
- 关注
原创 STL--常用algorithm总结
STL(标准模板库)里的是 C++ 中非常强大的一部分,它提供了大量的,可以对容器(如vectorlistdeque等)进行排序、查找、修改、遍历等操作。
2025-05-04 02:16:49
363
原创 C++-Lambda表达式
Lambda 是匿名函数,也就是没有名字的函数。常用于STL 算法中作为函数参数,让代码更简洁。部分说明[capture]捕获外部变量(如局部变量)的方式参数列表,和普通函数一样,如(int x)返回类型,可以省略(如果能自动推导){}函数体。
2025-05-02 23:06:29
439
原创 General Spark Operations(Spark 基础操作)
什么是Apache Spark?•用于大规模数据处理和分析的分布式计算引擎。•设计的内存处理,显著提高性能与传统的基于磁盘的方法相比
2025-04-24 01:49:40
1120
原创 MQTT Protocol
MQTT(Message Queuing Telemetry Transport)是一种轻量级的、移动消息推送、车联网等领域。
2025-03-19 01:31:25
1003
原创 C++---智能指针
C++ 智能指针(Smart Pointer)是 C++ 标准库提供的一种工具,用于自动管理动态分配的内存,避免内存泄漏问题。C++11 引入了和C++14 又增加了C++17 引入了的lock()方法改进。
2025-03-04 03:35:40
1171
原创 浅谈C++工厂方法和工厂函数
工厂函数是一种编程技巧,工厂函数就是一个普通的函数,它负责创建对象,隐藏具体对象的创建细节。#include <memory> // 用于智能指针public:// 纯虚函数,所有子类都必须实现// 虚析构函数public:public:// 工厂函数:根据传入的类型创建不同的对象// 如果类型不匹配,返回空指针// 调用多态方法} else {return 0;解析:函数的返回类型,表示返回一个指向Vehicle的unique_ptr。:函数名是。
2025-03-04 02:58:40
499
原创 C++---STL(String and Stack)
提供了丰富的字符串操作,如拼接、查找、替换、截取子串等,完全替代char*。std::stack适用于**后进先出(LIFO)**的场景,如逆序操作、括号匹配等,基本操作包括push()pop()top()和empty().是 C++ 标准库提供的字符串类,封装了 C 风格字符串 (char*),提供了更安全、功能更强大的字符串操作。
2025-02-28 18:45:16
624
原创 C++(STL)--queue(队列)priority_queue(优先队列)dequeue(双端队列)
双端队列(deque) 是一种可以在两端(队头和队尾)都能快速插入和删除的队列。它结合了栈(Stack)和队列(Queue)的特点,既可以当作栈(LIFO),也可以当作队列(FIFO),在 C++ STL 中,std::deque 是 一个动态数组,支持两端高效操作,但在中间插入删除的性能较 list 差。
2025-02-24 18:24:47
796
原创 C++ 泛型编程之补充(class 和typename)
在 C++ 模板编程中, 和 在某些情况下可以互换使用,而在某些情况下不能互换,甚至 是必须的。下面是更详细的解释和示例:2.什么时候 和 不一样?2.1 嵌套依赖类型 时必须用typename虽然 和 一样,但 在 嵌套依赖类型 时必须用!必须使用 关键字,以告诉编译器这是一个类型, 是 模板参数,编译器在解析模板时 并不知道 是类型还是变量。 关键字告诉编译器: 一定是一个类型。例如: 如果 依赖于模板参数 ,那么编译器在第一遍解析时无法确定 是一个类型还是一
2025-02-21 21:06:44
487
原创 C++---迭代器(Iterator)
迭代器是一种用于遍历容器(如数组、链表、集合等)的对象,类似于“指针”,但比指针更安全、功能更强。它主要用于 C++ STL(标准模板库) 以及其他支持迭代的编程环境。
2025-02-18 17:52:16
1076
原创 C++--STL库-List
list是C++标准库(STL)中的容器,属于<list>头文件。它的特点是::可以随时插入或删除元素,不需要手动管理内存。:每个节点都连接前后两个节点,支持双向遍历。:插入和删除的时间复杂度是,比vector快(vector可能会移动大量元素)。:不像vector可以直接访问vec[i]list只能(O(n))。1.list。
2025-02-18 17:24:39
448
原创 C++ STL(标准模板库)--Vector
创建及初始化代码示例:// 创建一个 vector// 空 vector// 创建 5 个默认初始化的元素(值为 0)// 创建 5 个值为 100 的元素// 直接初始化列表// 复制构造这里需要特别注意一下:size()返回当前容器中实际存储的元素个数。例如,如果你向中插入了 5 个元素,那么v.size()就是 5。capacity()返回当前容器已分配的存储空间能够容纳的元素个数。例如,你的可能一次性分配了足以容纳 8 个元素的空间,这时就是 8;
2025-02-16 00:45:22
668
原创 Bash 中的运算方式
Bash 本身不支持浮点运算,但可以借助。,除法运算的结果将不会包含小数部分。,即保留多少位小数。类似,但更旧,一般推荐用。,并且可以直接操作变量。类似,适用于整数计算,Bash 本身只支持。
2025-02-13 19:50:35
713
原创 Shell篇-字符串处理
和 % 用于从开头或结尾删除匹配的字符串,其中单个符号(# 或 %)是最短匹配,双符号(## 或 %%)是最长匹配。注意以结尾删除的例子;删除匹配a*C未成功的原因是:字符串data123aBCXYZ结尾不是C。无法匹配echo ${str%a*C} # 输出:data123XYZ。
2025-02-02 17:25:54
479
原创 数组-二分查找
二分查找是一种高效的查找算法,适用于在 有序数组 或列表中快速定位目标元素的索引,二分查找中,容易写错的地方往往是边界条件和区间的定义,这是导致程序混乱的根本原因。这里详细解释一下这两种常见的区间定义(左闭右闭 和 左闭右开)及其实现逻辑。
2025-01-20 21:52:53
398
原创 shell-特殊位置变量
这些是关于Shell脚本中的特殊变量和参数处理的知识点总结。具体包括以下几个方面:Shell特殊变量(位置参数)在Shell脚本中,有一些特殊变量可以帮助我们获取有关脚本本身以及传递给脚本的参数的信息。
2025-01-18 20:42:53
831
原创 shell篇加载普通变量知识点总结
info="tom"awk'BEGIN{print"$info"}'#输出:$info。在shell脚本中,变量在不同引用方式(单引号、双引号、反引号及不加引号)的行为和区别。每种引用方式的特点如下:
2025-01-17 19:35:48
424
原创 C 语言中二维数组的退化
1.数组名退化为指针的原因在于函数调用时无法直接传递整个数组。2.对于二维数组,退化为指向行的指针),以便编译器知道行的大小。3.二维数组与指针数组(char **)有本质不同,因为二维数组是一个连续的内存块,而指针数组是独立的指针集合。
2025-01-15 18:46:48
690
原创 Shell 变量与环境变量知识点总结
它通常会读取系统的全局配置文件(如 /etc/profile)以及用户的个人配置文件(如 ~/.bash_profile、~/.bash_login 或 ~/.profile)。登录 Shell 用于初始化用户的环境设置。非登录 Shell 通常不会读取 ~/.bash_profile,而是会读取 ~/.bashrc 文件。登录 Shell:用户登录时启动,读取 /etc/profile 和 ~/.bash_profile。非登录 Shell:已经登录后启动的其他 Shell,读取 ~/.bashrc。
2025-01-14 19:30:34
940
原创 shell --基本概念及脚本执行常用方法
Shell命令解释器是一种交互式的程序,用户可以通过它与操作系统的内核通信。它接收用户输入的命令,将这些命令翻译为操作系统可以理解的系统调用或操作,然后执行这些命令。
2025-01-13 17:48:26
744
原创 QT(QML语法)-属性(声明,初始化,赋值,属性绑定,属性组,对象列表。属性别名(双向))
目录1.属性(Property)2. 对象列表3. 属性组4.代码示例
2024-12-12 22:48:34
520
原创 C指针---指针数组与数组指针
数组指针是指向数组的指针(本质上是一个指针)与指针数组不同,数组指针指向的是一个整个数组,而不是数组的单个元素。用例:声明一个指向包含 5 个int元素的数组的指针// ptr 是一个指向数组的指针// 通过数组指针访问数组元素// 也可以直接通过数组指针遍历数组i < 3;:声明了一个数组指针ptr,它指向一个包含 3 个int元素的数组。(*ptr)[i]:通过解引用数组指针ptr来访问数组元素。数组指针:指向整个数组。例如,
2024-12-11 06:08:12
2052
原创 栈(stack)--c语言实现版
栈是一种数据结构,像一个倒立的容器。想象一下,把物品一个个放进去,但每次只能从最上面取出物品。也就是说,最后放进去的物品会最先被取出来,这种顺序叫做后进先出(LIFO)。
2024-12-03 22:31:41
437
原创 滑动窗口算法
滑动窗口的本质是:在一个数组或字符串中,用一个“窗口”不断滑动来查看其中的一部分内容,找到满足条件的结果。:假设有一个队伍,队伍中的每个人代表一个数字。可以用一个“尺子”(窗口)同时观察固定数量的人(窗口大小),举例:队伍是 1 3 5 7 9 2,尺子的长度是 3(窗口大小为 3)。我们从队伍最左边开始,用尺子观察:观察1 3 5,记录这些数字的和。然后把尺子向右移动一步,观察3 5 7,再次记录和。依次观察每个连续的 3 个数字,直到到达队伍末尾。
2024-11-25 21:12:57
773
1
原创 数据结构及算法--排序篇
在 C 语言中,可以通过嵌套循环和比较运算符来实现常见的排序算法,比如或(简单易实现):冒泡排序、选择排序、插入排序(性能更优):快速排序、归并排序、堆排序。
2024-11-18 20:01:05
663
1
原创 c/c++--struct对比
在C/C++中,struct(结构体)和class(类)都是用来创建自定义数据类型的关键字,但是也有许多不同之处。
2024-11-12 20:15:11
458
原创 c++--命名空间namespace和模板template及内联函数inline
在 C++ 中,命名空间(namespace)是一种机制,用来将函数、类、变量等标识符组织到不同的逻辑范围内。举个例子,在程序中使用了 Alex()函数,而在引入的库中也有一个Alex()函数,你就可以通过命名空间来区分它们:这样多个库或模块中即便有相同名字的标识符,也不会发生冲突,因为它们被放置在不同的命名空间中。指令可以让您在不显式指定命名空间的情况下,直接访问该命名空间中的元素。
2024-11-11 23:10:04
943
原创 c语言--数组
int arr[5];// 创建一个长度为5的整数数组// 创建并初始化数组如果数组的元素数量小于定义时的大小,未初始化的元素会默认赋值为0。// 数组内容为 {1, 2, 0, 0, 0}在 C 语言中,声明数组时如果数组的大小可以从初始化列表中推导出来,那么是可以不显式指定数组大小的。具体来说,数组的大小可以由编译器自动推断。
2024-11-08 22:54:35
1249
原创 c++--拷贝构造函数&友元函数(友元类)
特性浅拷贝深拷贝内存分配复制指针地址,指向同一内存分配新内存,复制数据内存管理共用同一内存,容易出现问题各自独立,互不影响适用场景不涉及动态内存分配的简单对象含指针成员的复杂对象示例复制地址,仅共享数据复制内容,独立内存。
2024-11-06 18:43:46
1093
原创 c++--动态内存
malloc() 函数在 C 语言中就出现了,在 C++ 中仍然存在,但建议尽量不要使用 malloc() 函数。new 与 malloc() 函数相比,其主要的优点是,new 不只是分配了内存,它还创建了对象。是一种自动分配的内存空间。当一个函数结束时,栈上的变量会自动释放。它适用于需要在运行时决定大小的内存,例如动态数组或对象。栈上的变量是编译时已知大小的,因此通常只适用于存储大小已知的局部变量。由于栈内存空间较小且有固定大小,栈上的内存分配和释放速度非常快。分配的内存,以避免内存泄漏。
2024-11-06 17:54:19
485
原创 数据结构算法篇--递归(c语言版)
在这里有个非常重要的分治思想,我概括一下就是从前到后,再从后到前,当然这里我概括的比较笼统,只可意会不可言传,实现递归的本质就是函数调用本身,并且要有明确的限制条件。,用来解决一些具有重复性质的问题。例如,计算阶乘、斐波那契数列等问题都可以通过递归实现。,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,省略。传入参数为10,输出为:3628800。递归是一种函数调用自身的方法。最后累乘一下就可以了。
2024-11-05 23:52:03
561
原创 数据结构-链表【chapter1】【c语言版】
在某些实现中,链表还可能包含一个指向最后一个节点的指针,以便于在尾部插入节点时提高效率。的指针,通常用于传递指针的地址,以便在函数内可以修改这个指针的值。在链表的实现中,使用。来传递指向头指针的地址,这样就可以在函数内部修改头指针的值。:一个变量,它存储另一个变量的地址。如果链表为空,头指针为NULL。:一个指向指针的指针。:链表通常有一个头指针,指向链表的第一个节点。
2024-11-03 21:31:54
1349
原创 C++--数据抽象和数据封装
抽象类是包含至少一个纯虚函数的类。纯虚函数是通过在函数声明后添加= 0来指定的。由于存在纯虚函数,抽象类无法被实例化,只能作为基类使用。纯虚函数:通过= 0定义,表示该函数没有实现,必须在派生类中实现。抽象类:包含至少一个纯虚函数的类,不能实例化。具体类:继承自抽象类并实现所有纯虚函数的类,可以被实例化。多态性:使用基类指针可以指向任何派生类对象,实现动态绑定。这种结构允许代码遵循开闭原则,易于扩展和维护,使得新类型的形状可以轻松地添加,而不需要修改已有代码。
2024-10-27 19:17:51
707
原创 C++--this关键字
this 的类型是 ClassName* const,其中 ClassName 是类的名称。const 表示指针本身是常量,意味着你不能改变 this 指针指向的地址(即它始终指向调用该函数的对象)。
2024-10-26 17:58:29
3287
原创 c++ --多态(虚函数)
通过这种方式,派生类可以重写这个函数,确保在运行时根据实际对象的类型调用相应的版本。当一个类派生自基类时,可以重写基类中的虚函数,这样在运行时根据对象的实际类型来调用相应的函数。纯虚函数是在基类中声明的虚函数,但没有提供实现。这种函数要求派生类必须实现它,否则派生类也会变成抽象类,不能被实例化。这就是动态绑定的核心优势,让代码在运行时更加灵活。类型的对象,并返回指向该对象的指针。虚函数是基类中的一个函数,用。类型的指针,但它指向的是。上的虚函数时,将会根据。C++ 中的多态确实是通过。
2024-10-25 20:03:04
433
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人