- 博客(72)
- 收藏
- 关注
原创 map和set c++
关联式容器也是⽤来存储数据的,与序列式容器不同的是,关联式容器逻辑结构通常是⾮线性结构,两个位置有紧密的关联关系,交换⼀下,他的存储结构就被破坏了。顺序容器中的元素是按关键字来保存和访问的。关联式容器有map/set系列和unordered_map/unordered_set系列。map和set的底层都是红黑树只不过map存放的是键值对就像字典一样而set只存放了键。他们都不可以存放重复的数据。
2025-01-17 21:26:13
149
原创 nth_element函数
是 C++ 标准库中的一个函数,用于部分排序。它可以将序列中的第 n 小的元素移动到第 n 个位置,并确保该位置之前的所有元素都小于等于它,之后的所有元素都大于等于它。nth_element(起始地址,查找元素的下标,最后一个元素地址+1,自定义排序);也就是所他只会将一组数据进行一段划分而不会真正对一组数据进行排序。(起始地址,查找元素的下标,最后一个元素地址+1);
2025-01-17 21:02:36
216
原创 c++ string类的简单模拟实现
我们简单实现一下string的逻辑所以成员变量就只实现str指针和大小length就可以了。赋值=的operator我们可以使用传统方法和拷贝构造一样也可以使用拷贝交换实现。这里的swap函数也可以改为全局函数再进行友元声明。析构函数就释放空间再改一下值就可以了。默认构造我们选择通过初始化列表实现。字符串传值构造我们要进行深拷贝。
2024-08-29 21:00:55
301
原创 c++内存管理
C语言在内存管理上一般使用的函数主要是malloc,realloc,calloc和free但c++又引进了new和deleat。2. 内存映射段是高效的I/O映射方式,用于装载一个共享的动态内存库。deleat和new与之前的函数最主要的区别出来写法简单了不少还有就是在申请类的空间时会自动调用析构函数和构造函数。注意在使用这些函数或操作符的时候要想对应的使用不然有时候会导致内存的泄露甚至程序的崩溃。1. 栈又叫堆栈--非静态局部变量/函数参数/返回值等等,栈是向下增长的。
2024-08-06 20:28:10
193
原创 c++友元
• 友元提供了⼀种突破类访问限定符封装的⽅式,友元分为:友元函数和友元类,在函数声明或者类声明的前⾯加friend,并且把友元声明放到⼀个类的⾥⾯。• 友元类中的成员函数都可以是另⼀个类的友元函数,都可以访问另⼀个类中的私有和保护成员。• 外部友元函数可访问类的私有和保护成员,友元函数仅仅是⼀种声明,他不是类的成员函数。• 友元类的关系是单向的,不具有交换性,⽐如A类是B类的友元,但是B类不是A类的友元。• 友元类关系不能传递,如果A是B的友元, B是C的友元,但是A不是B的友元。• 有时提供了便利。
2024-08-05 21:39:56
188
原创 C++类和对象(上)
public:// 成员函数perror("malloc申请空间失败");return;top = 0;// ...扩容int Top()private:// 成员变量int* array;size_t top;// 分号不能省略int main()Stack st;st.Init();st.Push(1);st.Push(2);return 0;
2024-07-23 20:58:11
882
原创 c++引用
引⽤不是新定义⼀个变量,⽽是给已存在变量取了⼀个别名,编译器不会为引⽤变量开辟内存空间,它和它引⽤的变量共⽤同⼀块内存空间。⽐如:⽔壶传中李逵,宋江叫"铁⽜",江湖上⼈称"⿊旋⻛";C++中为了避免引⼊太多的运算符,会复⽤C语⾔的⼀些符号,⽐如前⾯的>,这⾥引⽤也和取地址使⽤了同⼀个符号&,⼤家注意使⽤⽅法⻆度区分就可以。引⽤在实践中主要是于引⽤传参和引⽤做返回值中减少拷⻉提⾼效率和改变引⽤对象时同时改变被。引⽤⼀旦引⽤⼀个实体,再不能引⽤其他实体。⼀个变量可以有多个引⽤。
2024-07-23 10:03:41
136
原创 c++ 函数重载
C++⽀持在同⼀作⽤域中出现同名函数,但是要求这些同名函数的形参不同,可以是参数个数不同或者类型不同。这样C++函数调⽤就表现出了多态⾏为,使⽤更灵活。C语⾔是不⽀持同⼀作⽤域中出现同名函数的。注意函数重载和缺省参数尽量不要一起写。
2024-07-23 09:58:34
153
原创 c++缺省参数
缺省参数是声明或定义函数时为函数的参数指定⼀个缺省值。在调⽤该函数时,如果没有指定实参则采⽤该形参的缺省值,否则使⽤指定的实参,缺省参数分为全缺省和半缺省参数。(有些地⽅把缺省参数也叫默认参数)。全缺省就是全部形参给缺省值,半缺省就是部分形参给缺省值。C++规定半缺省参数必须从右往左依次连续缺省,不能间隔跳跃给缺省值。函数声明和定义分离时,缺省参数不能在函数声明和定义中同时出现,规定必须函数声明给缺省值。带缺省参数的函数调⽤,C++规定必须从左到右依次给实参,不能跳跃给实参。
2024-07-23 09:45:14
179
原创 c++输入输出
c++的<iostream>就像c的<stdio.h>一样都是一个头文件,<iostream> 是 Input Output Stream 的缩写,是标准的输⼊、输出流库,定义了标准的输⼊、输出对象。std::cin 是 istream 类的对象,它主要⾯向窄字符(narrow characters (of type char))的标准输⼊流。std::endl 是⼀个函数,流插⼊输出时,相当于插⼊⼀个换⾏字符加刷新缓冲区。std::cout 是 ostream 类的对象,它主要⾯向窄字符的标准输出流。
2024-07-23 09:40:42
149
原创 c++命名空间
在C/C++中,变量、函数和后⾯要学到的类都是⼤量存在的,这些变量、函数和类的名称将都存在于全局作⽤域中,可能会导致很多冲突。使⽤命名空间的⽬的是对标识符的名称进⾏本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。
2024-07-22 14:33:20
248
原创 排序c语言
冒泡排序(Bubble Sort)是最简单和最通用的排序方法,其基本思想是:在待排序的一组数中,将相邻的两个数进行比较,若前面的数比后面的数大就交换两数,否则不交换;由此可得,在排序过程中,大的数据往下沉,小的数据往上浮,就像气泡一样,于是将这种排序算法形象地称为冒泡排序。方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。
2024-07-20 14:04:25
348
原创 树形结构C语言的实现
树形结构是一层次的嵌套结构。一个树形结构的外层和内层有相似的结构,所以这种结构多可以递归的表示。经典数据结构中的各种树状图是一种典型的树形结构:一棵树可以简单的表示为根,左子树,右子树。左子树和右子树又有自己的子树。
2024-07-05 18:34:12
1011
原创 栈的实现 c语言
堆栈又名栈(stack),它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
2024-05-26 14:09:16
188
原创 实时时钟 改
1.原先的程序存在时针和分针只会指向整数的问题比如3.59时针指向3而到4.00时针会直接跳到4。注意:运行这代码需要先下载easyx在vs上。如今的时针和分针的角度算法上进行了改进。2.在表盘的周围上增加了60个小点。
2024-02-06 14:39:09
229
原创 找单身狗2
一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。有数组的元素是:1,2,3,4,5,1,2,3,4,6。编写一个函数找出这两个只出现一次的数字。只有5和6只出现1次,要找出5和6.
2024-02-03 14:25:38
141
原创 猜凶手
member代表了没有说谎的次数,从A到D循环依次假设是凶手计算member的值如果member等于了3那就说明了当前假设的那个人就是凶手。日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。现在请根据这些信息,写一个程序来确定到底谁是凶手。已知3个人说了真话,1个人说的是假话。
2024-02-02 20:06:31
200
原创 杨氏矩阵
有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。要求:时间复杂度小于O(N);
2024-02-02 19:34:36
120
原创 自幂数 水仙花数
水仙花数(Narcissistic number)也被称为、阿姆斯壮数或(Armstrong number),水仙花数是指一个 3 位数,它的每个数位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。水仙花数只是的一种,严格来说3位数的3次才称为水仙花数。附:其他位数的自幂数名字三位自幂数:水仙花数。
2024-01-26 12:50:26
190
原创 求两个数二进制中不同位的个数
编程实现:两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?输入例子:1999 2299输出例子:7。
2024-01-24 21:54:46
362
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人