- 博客(73)
- 收藏
- 关注
原创 【C++】stack、queue和priority_queue
在C++ STL(Standard Template Library)标准库中,stack、queue、priority_queue 是常用的容器适配器,它们基于其它基本容器(例如 std::deque 以及 std::vector)进行实现,为程序员提供了一种基于 LIFO(Last In First Out)和 FIFO(First In First Out)规则的数据结构。
2023-10-20 10:59:29
142
原创 【Linux】常见基本指令及其注意事项
在Linux中,指令(也称为命令或命令行工具)是一种用于执行特定任务的程序。它们是通过在终端(也称为命令行界面)中输入特定的文本命令来调用的。每个指令都有其特定的作用和功能。以下是一些常见的Linux指令及其作用:
2023-10-11 20:19:18
365
原创 【C++】list详解、list与vector的对比
list 是一个允许在常数时间(O(1))内进行任意位置插入/删除操作的顺序容器,并且该容器可以前后双向迭代。list 的实现方法类似于双向链表:双向链表在不同的且没有关联的存储空间存储每一个元素,但是每个元素保持链接着它的前一个和后一个元素。l
2023-10-08 10:19:55
1182
原创 【C++】vector
C++中的vector是一种动态数组容器,提供了灵活的数组操作接口。它是标准库中最常用和最常见的容器之一,具有以下特点和用途:1. 动态调整大小2. 高效的随机访问3. 高效的尾部插入和删除4. 连续的内存存储5. 支持动态增长6. 提供丰富的成员函数和操作接口。通过使用vector,我们可以更方便地管理和操作动态大小的数组数据。
2023-09-23 16:10:42
577
原创 【C++】string类
C++引入string类是为了提供一种更高级、更方便和更安全的字符串处理方式,相比于C语言中使用字符数组和库函数来处理字符串,引入string类使得C++中的字符串处理更加便捷、安全和高级,提供了更多的功能和操作,减少了开发者的工作量,同时也提高了代码的可读性和可维护性。因此,使用string类能够在C++中更好地处理字符串。
2023-09-20 17:49:09
158
原创 【C++】泛型编程、函数模板、类模板
C++引入了基于模板机制的泛型编程,即给编译器一个模板,让编译器根据不同的类型利用该模板生成相应的代码。 模板机制实现代码重用、拥有更高的灵活性和可扩展性,同时也是C++语言的重要特性之一。函数模板是一种通用的函数形式,允许定义一个通用的函数,在使用时可以根据参数类型自动推导出模板参数类型,并生成相应的函数实例。类模板是一种通用的类形式,可以根据实参的数据类型生成对应的类实例。
2023-09-15 11:40:49
195
原创 【C++】内存管理
本文复习了C语言的动态内存管理方式malloc/calloc/realloc/free,介绍了C++的内存管理方式:new/delete。将二者对比得出结论:虽然 malloc/free 和 new/delete 都可以用于内存的分配和释放,但在C++中,推荐使用 new/delete 来管理动态分配的内存,因为它们提供了更好的类型安全性和自动调用构造函数和析构函数的功能。
2023-09-14 17:23:42
119
原创 【C++】类和对象(三)
本文再谈构造函数,认识了构造函数可能使用到的初始化列表和explicit关键字。接着详细介绍了const成员和static成员的使用和注意事项,最后引入了友元和内部类两个概念,进一步加深了对类和对象的认识。
2023-09-13 16:38:06
107
原创 【C++】类和对象(二)
在C++中,当我们定义一个类时,编译器会自动为该类生成一些默认的成员函数,除非显式地定义或删除它们。本文主要介绍了这些成员函数中的构造函数、析构函数、拷贝构造函数和赋值运算符重载。
2023-09-12 15:22:47
124
原创 【C++】类和对象(一)
在C++中,类是一种用户自定义的数据类型,它封装了数据和相应的操作(方法)来处理这些数据。对象是类的一个实例,可以通过实例化类来创建多个具体的对象。本文主要介绍了类的引入、类的定义、以及类的访问限定符及封装。通过类的实例化进而介绍类对象模型,最后介绍了特殊的this指针
2023-09-10 16:45:03
80
原创 【C++】引用、内联函数、auto关键字、指针空值nullptr
C++中的引用、内联函数、auto关键字、指针空值nullptr的概念和使用细则。
2023-08-02 18:05:48
192
原创 【数据结构】排序
在数据结构中,排序是指将一组数据按照一定的规则或者条件进行重新排列的过程,以使得数据按照升序或降序排列。排序是算法领域中非常重要的一个基本操作,常用于对数据进行整理、查找和优化处理。经常在日常生活中使用
2023-07-24 16:26:18
301
原创 【数据结构】堆(Heap)的概念、结构及其实现
堆排序是一种利用堆数据结构进行排序的算法。堆是一种特殊的完全二叉树,分为最大堆和最小堆两种形式。利用堆的性质,在建立堆的过程中,将待排序的序列重构为一个堆,然后每次将堆顶元素与末尾元素交换,并调整堆,直到完成排序。
2023-07-20 17:22:11
2345
原创 【数据结构】二叉树的概念、结构和实现
在计算机科学中,树是由结点和边组成的一种数据结构。它由一个根节点开始,分支向下连接到树的其他节点,每个节点可以有任意数量的子节点。树是一种递归的数据结构,每个子树都是独立的树,而整个树的高度是从根节点到最深的子节点的边的数量。二叉树是最为常用的一种树
2023-06-16 14:40:17
273
原创 【数据结构】栈和队列
栈和队列是数据结构中比较基础的两种数据结构,它们都是线性结构,但是在数据存储和操作方式上有一些区别。栈的特点是后进先出,只能在一端进行插入和删除操作,存储结构有顺序栈和链式栈两种。队列的特点是先进先出,只能在队尾插入元素,在队头删除元素,存储结构有顺序队列和链式队列两种。在实际应用中,栈和队列都有广泛的应用,例如程序的函数调用、表达式求值、图的遍历等。掌握栈和队列的基本概念和操作方法,对于学习其他数据结构和算法具有重要的意义。
2023-05-23 16:44:10
287
3
原创 【数据结构】顺序表和链表
顺序表和链表是数据结构中常用的两种数据存储方式。顺序表是一种线性数据结构,它由一组相同类型的数据元素组成,这些元素按照一定的顺序排列。顺序表的实现方式是用数组来存储元素,同时记录表的长度和容量。链表的大小可以动态地改变,可以在表的任意位置插入或删除元素
2023-05-22 18:06:41
411
原创 【数据结构】算法的时间复杂度和空间复杂度
在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。一个算法所花费的时间与其中语句的执行次数成正比,算法中的基本操作的执行次数,为算法的时间复杂度。空间复杂度也是一个数学表达式,是对一个算法在运行过程中临时占用存储空间大小的量度 。
2023-05-06 17:41:39
184
原创 【C语言】文件操作
在之前我们使用的无论是结构体还是数组,每次程序运行完后数据就会被清空。如果我们想要在下一次运行程序继续使用之前的值时,就需要重新输入一遍数据,这样的操作很不方便。如果我们想将数据保存下来,只有当我们自己选择删除数据时,数据才会被清除,这时就可以使用文件。使用文件我们可以将数据直接存放在电脑的硬盘上,做到了数据的持久化。
2023-04-02 22:41:37
588
原创 【C语言】动态内存函数的使用
整形变量和数组的空间开辟大小是固定的。但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间大小在程序运行的时候才能知道,那数组的编译时开辟空间的方式就不能满足了。这时候就可以动态内存开辟。
2023-03-30 23:44:34
232
原创 【C语言】结构体实现位段的能力
掌握结构体就得了解结构体实现的能力。位段的声明和结构是类似的,有两个不同:1.位段的成员必须是int或signed int。2.位段的成员名后边有一个冒号和一个数字。
2023-03-21 15:49:37
72
原创 【C语言】结构体的内存对齐
在上一篇中我们已经掌握了结构体的基本使用。现在我们深入讨论一个问题:计算结构体的大小。我们来看下面一串代码,想一想它们的结果分别是什么?
2023-03-21 15:09:17
85
原创 【C语言】memcpy、memmove函数的使用和模拟
如果目标区域和源区域有重叠的话,memmove() 能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中,复制后源区域的内容会被更改。如果目标区域与源区域没有重叠,则和 memcpy() 函数功能相同。
2023-03-17 11:56:45
244
原创 【C语言】告诉你为什么unsigned char a=-1;%d打印出来是255
从自动类型转化告诉你为什么unsigned char a=-1;%d打印出来是255
2023-03-06 18:27:50
4154
5
原创 扫雷(C语言实现)
扫雷》是一款大众类的益智小游戏,于1992年发行。游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷,踩到一个雷即全盘皆输。我们今天实现的是简易版的9*9的扫雷游戏,即棋盘上总共放有10个地雷。
2023-02-11 21:10:18
265
原创 三子棋(用C语言实现)
选择开始游戏后我们需要在屏幕上打印一个棋盘,这时需要创建一个3*3的二维字符数组存放棋盘数据,并对其初始化,使需要放棋子的位置暂时放上空格。每次下棋后通过比较每一行和每一列以及斜方向,如果有一方赢就直接返回获胜的一方。2.程序需要判断玩家输入的坐标是否合法,如果不合法也应提示重新输入。电脑是自动下棋,所以不需要警告,用while循环,不符合的直接跳过。1.程序需要判断玩家输入的坐标是否已落子,如果落子应提示重新输入。打印好棋盘后,玩家进行下棋,输入坐标则会在相应位置出现 '进入游戏(game函数)
2023-02-09 19:04:46
88
原创 Matlab编写函数实现牛顿迭代法,添加初值判定模块。若初值不满足选取条件,则重新输入初值;若累积n次初值不满足条件,则算法终止,输出异常信息。
Matlab编写函数实现牛顿迭代法,添加初值判定模块。
2022-12-02 18:00:53
824
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅