前言在前面的文章中,我们已经学习了STL中底层为红黑树结构的一系列关联式容器——set/multiset 和 map/multimap(C++98)1. unordered系列关联式容器在C++98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到log_2 N,即最差情况下需要比较红黑树的高度次。 在C++11中,STL又提供了4个un ......
40
0
0
2024-05-02
一.再谈构造函数构造函数其实分为: 1.函数体赋值2.初始化列表 之前所讲到的构造函数其实都是函数体赋值,那么本篇文章将会具体讲述初始化列表。初始化列表语法以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟 一个放在括号中的初始值或表达式。代码语言:javascript复制class Date { public: Date(in ......
47
0
0
2024-05-02
首先我们来看一下扫雷游戏 这是一个扫雷游戏,所以我们要做的第一步就是把这个棋盘初始化并打印出来。这就用到了二维数组,初始化棋盘之后我们就要把雷布置在棋盘里面,然后进行排查雷,这是我们实现扫雷游戏的一个大体思维框架。还需要注意的是,我们创建游戏的过程中需要用到两个源文件(game.c test.c)和一个头文件(game.h),在头文件中包 ......
37
0
0
2024-05-01
实现三子棋的思路创建游戏的初始化界面创建一个名为board的二维数组并且初始化将棋盘进行搭建并且打印出来玩家进行下棋并且打印电脑下棋并且打印判断结果还需要注意的是,我们创建游戏的过程中需要用到两个源文件(game.c test.c)和一个头文件(game.h),在头文件中包含了程序所需的各种头文件并且实现对各种函数的声明,而源文件test.c用于引用函数,g ......
37
0
0
2024-05-01
一.链表的概念和结构链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表 中的指针链接次序实现的链表其实有很多种类: 1.单向 双向 2.带头 不带头 3.循环 不循环 其中共能组合出8种形式的链表; 这篇文章讲的是结构最简单的链表,也就是单向不带头不循环链表,即单链表。单链表中的元素称为节点,节点有一个数据data,还有一个结构体 ......
36
0
0
2024-04-30
一.前言其实顺序表的增删查改和前面的通讯录差不多,可以说通讯录的底层原理就是顺序表。如果你会写通讯录,那么顺序表也不是问题。所以这篇文章不会讲得太详细,如果你有不懂的地方,请看前面通讯录的实现过程,那里讲的非常详细。通讯录二.顺序表1.概念及结构顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储; 在数组上完成数据的增删查 ......
42
0
0
2024-04-30
一.前言从这篇文章开始,C语言的学习就结束了,接下来将会开启数据结构与算法的学习。早期,计算机刚被发明出来,内存空间并不是很大,所以不仅追求程序运行时的时间效率,还追求空间效率,但发展到今天,已经不太追求空间效率了,时间效率的追求是不变的。下面就让我们一起学习时间复杂度和空间复杂度是什么吧~二.时间复杂度1.概念1.时间复杂度是一个函数(注意这不是编程语言里 ......
41
0
0
2024-04-30
一.代码运行是的两种环境1.翻译环境,在这个环境中源代码被转换为可执行的机器指令。 2.执行环境,它用于实际执行代码下面主要讲解翻译环境。二.翻译环境从.c 文件到 .exe 文件需要经过编译器的翻译,而翻译又分为 编译和链接两个部分编译又分为三个部分: 1.预编译:又叫预处理,在这个部分主要完成头文件的包含,#define的替换,注释的删除; 2.编译:主 ......
38
0
0
2024-04-30
一.文件指针1.缓冲文件系统中,关键的概念是“文件类型指针”,简称“文件指针”; 2.每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等);3.这些信息是保存在一个结构体变量中的。该结构体类型是有系统声明的,取名FILE。下面是在 vs2013编译环境提供的 stdio.h 头文件中有以下 ......
34
0
0
2024-04-30
一.malloc 与 free1.malloc函数声明:1.参数size_t: 要开辟的内存块的大小,以字节为单位; 如果参数 size 为0,malloc的行为是标准是未定义的,取决于编译器。2.返回值:该函数返回一个指针 ,指向已分配大小的内存;如果请求失败,则返回 NULL; 所以在使用完这个函数后要判断是否成功开辟,即返回值是否是NULL; 因为返回 ......
24
0
0
2024-04-30
一.通讯录思路1.创建结构体类型,其中包含通讯录中联系人的信息; 该信息可以包括:姓名,年龄,性别,电话,地址等;2.创建一个结构体存储通讯录;3.写一个简易的菜单来表明通讯录的功能; 包括但不限于: 添加add,删除del,查找search,修改modigy,排序sort,打印通讯录print等;4.通过函数来实现这些功能;二.三个文件的建立对于较复杂的一 ......
27
0
0
2024-04-30
一.memcpy1.功能拷贝内存块,将字节数的值从源指向的位置直接复制到目标指向的内存块。2.库函数定义3.实例代码语言:javascript复制/* memcpy example */ #include <stdio.h> #include <string.h> struct { char name[40]; ......
32
0
0
2024-04-30
前言在之前的文章里,我们进行了模板初阶的学习( 【C++】泛型编程——模板初阶),了解了什么是泛型编程,学习了函数模板和类模板。 那这篇文章,我们继续学习模板进阶的内容的学习。1. 模板参数的分类首先我们来回顾一下:我们在模板初阶的学习中,定义模板参数是怎么定义的? 是不是使用class或者typename关键字啊, template<class T1 ......
28
0
0
2024-04-30
这篇文章我们来做几道stack相关的OJ题,练习一下stack的使用。1. 最小栈先来看第一道题——:最小栈题目要求我们设计一个MinStack 类:除了提供常见的几个接口之外,还要搞一个int getMin(),使得我们能够在常数时间O(1)内获取到栈中最小的元素。思路分析那要怎么做呢?大家想这样行不行: 我们定义一个变量min来保存最小值,向栈里面入第一 ......
23
0
0
2024-04-30
一.strlen1.功能计算字符串长度,直到遇到 '\0' ;2.模拟实现我们是仿照库函数的方式模拟的,所以先来看看strlen 再库函数里是如何定义的;这个函数很简单,所以直接上代码:代码语言:javascript复制unsigned my_strlen(const char* str) { assert(str); unsigned count ......
39
0
0
2024-04-30