- 博客(76)
- 资源 (18)
- 收藏
- 关注
原创 自定义类MyString并实现右移操作符、左移操作符、等于、不等于、赋值等操作符的重写
MyString.h文件:#pragma once#include <iostream>using namespace std;class MyString{public: MyString(); MyString(const char* str); MyString(const MyString& myString); ~MyS...
2019-02-20 17:31:49 794
原创 C++面试宝典:智能指针简介(shared_ptr实现)
原文:C++面试宝典:智能指针简介(shared_ptr实现)_huangyitai的博客-CSDN博客
2022-03-21 17:18:30 1389
原创 C++静态成员和非静态成员的区别
原文:C++静态成员和非静态成员的区别_mtOS1573的博客-CSDN博客1.数据成员可以分静态变量、非静态变量两种.静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因为静态成员存在于内存,所以非静态成员可以直接访问类中静态的成员.静态成员在每个类中只有一个拷贝,是解决同一个类的不同对象之间数据和函数共享问题的。非成静态员:所有没有加Stat..
2022-03-21 17:01:05 812
原创 多线程及C++面试宝典
史上最全的C++面试宝典(九)—— 多线程_最靓的仔的博客-CSDN博客_c++多线程面试题史上最全的C++面试宝典(合集)_最靓的仔的博客-CSDN博客_c++面试宝典
2022-03-21 14:48:34 1689
原创 set,multiset,unordered_set
set是关联式容器。在set中每个元素的值都唯一(multiset中一个值可以出现多次),而且系统能根据元素的值自动进行排序,所以不能指定插入位置。应该注意的是set中数元素的值不能直接被改变(不能使用at()和[ ]操作符),如果希望修改一个元素的值,必须先删除原有的元素,再插入新的元素。C++ STL中标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树unordered_set基于哈希表(关键码值映射到Hash表中一个位置来访问记录
2022-03-18 16:47:55 942
原创 c++ map与unordered_map区别及使用
map:map内部实现了一个红黑树,红黑树具有自动排序的功能,因此map内部的所有元素都是有序的,使用中序遍历可将键值按照从小到大遍历出来unordered_map: unordered_map内部实现了一个哈希表(也叫散列表,通过把关键码值映射到Hash表中一个位置来访问记录,查找的时间复杂度可达到O(1),其在海量数据处理中有着广泛应用)。因此,其元素的排列顺序是无序的时间复杂度:map和multimap:插入: O(logN),查看:O(logN),删除:O(logN);unorder
2022-03-18 16:12:13 111
原创 new和malloc的区别
1 属性 new和delete是C++关键字,需要编译器支持;malloc和free是库函数,需要头文件支持。2 参数 使用new操作符申请内存分配时无须指定内存块的大小,编译器会根据类型信息自行计算。而malloc则需要显式地指出所需内存的尺寸。3 返回类型 new操作符内存分配成功时,返回的是对象类型的指针,类型严格与对象匹配,无须进行类型转换,故new是符合类型安全性的操作符。而malloc内存分配成功则是返回void * ,需要通过强制类型转换将void*指针转换成...
2022-03-18 15:03:39 94
原创 哪些函数不能定义为虚函数?
1)友元函数,它不是类的成员函数2)全局函数3)静态成员函数,它没有this指针3)构造函数,拷贝构造函数,以及赋值运算符重载(可以但是一般不建议作为虚函数)
2022-02-25 16:04:23 174
原创 weak_ptr的作用及应用场景——shared_ptr的循环引用问题
https://blog.csdn.net/LLZK_/article/details/52431404
2020-04-03 19:50:25 309
原创 C++模板类实现LinkList
LinkList.h文件#pragma once#include <iostream>//在插入元素时,应该把每一个元素都保存下来//模板类中应该能分配节点,缓存节点template <typename T>struct Node{ T t; Node<T> *next;};template <typename T>c...
2020-01-09 20:42:20 1347
原创 排序
排序有选择法、插入排序、冒泡排序、希尔排序、快速排序法、归并排序等方法。假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,则此排序算法是稳定的。(1)选择排序法是一种不稳定的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列...
2020-01-09 20:33:29 116
转载 C/C++文件操作——输入输出流
https://blog.csdn.net/W614171629/article/details/80898019
2019-12-11 17:42:42 104
原创 模板类实现STL_Array
SeqList.h文件#pragma once#include <iostream>using namespace std;template <typename T>class SeqList{public: SeqList(int capacity); ~SeqList(void); int getLen(); int getCapacit...
2019-11-21 21:09:00 193
原创 树的非递归遍历_中序
重要算法思路:1.如果结点有左子树,该结点入栈没有左子树,访问该结点2.如果结点有右子树,重复步骤1,如果没有右子树,访问栈顶,重复步骤1访问右子树3.如果栈为空,遍历结束#include <iostream>#include <stack>typedef struct BitNode{ int data; struct BitNo...
2019-11-20 18:02:09 133
原创 树的表示法以及遍历
树的表示法有二叉链表示法、三叉链表示法、双亲链表示法等二叉链表示法:typedef struct BiTNode{ int data; struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;//二叉链表示法1int main_01(){ BiTNode t1,t2,t3,t4,t5; memset(&t1,0,size...
2019-11-14 21:02:56 210
原创 树和二叉树
根:根节点,没有前驱(即结点1)结点的度:一个结点的子树数目称为该结点的度。(例如结点1的结点的度为3,结点2的结点的度为3,结点3的结点的度为0)。树的度:所有结点度当中,度最高的一个。(上图树的度是3)。叶子结点:上图应该是:3、5、6、7、9、10(没有后继)分之结点:除了叶子结点,其他的都称为分之结点,和叶子结点构成互补的关系。(1、2、4、8)内部结点:分之结点除...
2019-11-14 17:39:05 100
原创 队列的链式存储
基于以前的线性表实现,线性表见https://blog.csdn.net/qq_33185566/article/details/99684151linkqueue.h文件#include "stdio.h"#include "stdlib.h"#include "linklist.h"typedef void LinkQueue;typedef struct _tag_Li...
2019-11-14 13:31:45 98
原创 队列的顺序存储
先进先出,就是"队列" 我们可以想象成,排队买票,先来的先买,后来的只能在末尾,不允许插队。队列的两个基本操作:入队 将一个数据放到队列尾部;出队 从队列的头部取出一个元素。队列也是一种操作受限的线性表数据结构 它具有先进先出的特性,支持队尾插入元素,在队头删除元素。队列的概念很好理解,队列的应用也非常广泛如:循环队列、阻塞队列、并发队列、优先级队列等。代码(基于以前的线性表实现,线性...
2019-11-13 19:54:01 274
原创 栈的应用3:中缀表达式转后缀表达式
中缀表达式转后缀表达式思路:对于数字:直接输出对于符号: 左括号:进栈 运算符号:与栈顶符号进行优先级比较 若栈顶符号优先级低,此符号进栈(默认栈顶若是左括号,左括号优先级最低) 若栈顶符号优先级高,将栈顶符号弹出并输出,之后进栈 右括号:将栈顶符号弹出并输出,直到匹配到左括号遍历结束:将栈中所有符号弹出并输出...
2019-11-13 16:18:10 98
原创 栈的应用2:后缀计算
后缀表达式:对于数字:进栈对于符号:从栈中弹出右操作数从栈中弹出左操作数根据符号进行计算将运算压入栈中#include "linkstack.h"int isNum(char c){ return ('0' <= c) && (c <= '9');}int isSymbol(char c){ return (c == '+') || (...
2019-11-12 20:35:35 181
原创 栈的应用1:就近匹配
当需要检测成对出现但又不相邻的事物时,可以使用栈“后进先出”的特性栈非常适合于需要“就近匹配”的场合、以下是一个例子:几乎所有的编译器都有检测括号是否匹配的能力,那么此功能如何实现呢?算法思路:从第一个字符开始扫描,当遇见普通字符时忽略,当遇见左符号时压入栈中当遇见右符号时从栈中弹出栈顶符号并进行匹配,匹配成功,继续读入下一个字符匹配失败,立即停止并报错结束:成功:所有字...
2019-11-12 19:41:52 143
原创 栈的链式存储结构
栈的链式存储结构与顺序存储结构开口方向应相反,因为对链表的头部操作会减少对链表的遍历,所以我们选用第二种结构同时我们基于线性表的链式存储实现栈的链式存储,线性表的链式存储实现见:https://blog.csdn.net/qq_33185566/article/details/99684151linkstack.h文件#include "stdio.h"#include "li...
2019-11-12 16:48:53 184
原创 栈的顺序存储的实现
栈是一种先进先出的结构,他是一种特殊的线性表,栈的数据元素之间的一一对应的关系可以利用顺序的存储来表示, 那么可以利用数组来实现栈数据结构。在第二种结构中,从数组开始位置进行操作,对栈进行操作时会涉及到大量的数组的移动和删除,而第二种从尾部操作则会避免不必要的操作,所以我们选用第一种结构。同时由于栈是一种特殊的线性表,所以直接基于以前实现的线性表来实现栈的顺序存储,线性表的顺序存储见:ht...
2019-11-12 16:39:27 343
原创 双向链表的设计与实现
1.双向链表可以完成普通链表的所有操作,并且解决了普通链表逆向遍历效率低的问题。双向链表相对于普通链表没有多大提示,需要注意的就是插入删除操作时的异常处理,插入删除0号节点的异常,第一次插入的异常,最后一次删除的异常。dlinklist.h文件#pragma once#include "stdio.h"#include "stdlib.h"#include "string....
2019-08-23 17:36:14 284
原创 循环链表的实现
1.标准的循环链表与一般链表多了个游标,多了3个游标操作函数。2.循环链表API的写法与一般链表大致一样,只有0号节点的增加和删除需要注意,还有一次节点的插入和最后一个节点的删除需要注意,删除时游标的移动需要注意。3.循环链表相对于一般链表并无多大性能上的增强,只是让链表解决约瑟夫问题十分方便。circlelist.h文件#pragma once#include "s...
2019-08-21 14:38:28 186
原创 线性表的链式存储的设计与实现
linklist.h文件:#pragma once#include "stdio.h"#include "stdlib.h"#include "string.h"/*指针指向谁,就把谁的地址赋值给指针*/typedef void LinkList;typedef struct _tag_LinkListNode{ struct _tag_LinkListNode* ne...
2019-08-16 19:23:43 231
翻译 转---原码,反码,补码的深入理解与原理
https://blog.csdn.net/zhiwen_a/article/details/81192087
2019-08-14 15:59:11 171
原创 数据结构 线性表顺序存储的设计与实现
seqlist.h文件:#pragma once#include "stdlib.h "#include "stdio.h"#include "memory.h"typedef void SeqList;typedef void SeqListNode;//创建线性表SeqList* SeqList_Create(int capacity);//销毁线性表void Se...
2019-08-08 17:42:48 230
原创 STL 综合案例 演讲比赛
比赛共24人,抽签决定分组,十个评委,去掉最高分以及最低分的平均分即为选手成绩,每次淘汰一半人,最后得出比赛前三名#include <map>#include <vector>#include <algorithm>#include <string>#include <deque>#include<numeric&g...
2019-08-06 20:39:30 122
原创 C++ STL 集合算法 set_union、set_intersection、set_intersection
#include <iostream>#include <vector>#include <algorithm>#include <string>using namespace std;void printV(vector<int> &vec){ for (vector<int>::iterator...
2019-08-01 20:44:52 312
原创 C++ STL 几个常用的排序算法merge、random_shuffle、reverse
#include <iostream>#include <vector>#include <algorithm>#include <string>using namespace std;void printV(vector<int> &vec){ for (vector<int>::iterator...
2019-08-01 20:06:54 125
原创 C++ STL几个常用的查找算法 adjacent_find、binary_search、count、count_if、find、find_if
#include <iostream>#include <vector>#include <algorithm>using namespace std;void adjacent_find_(){ vector<int> vec; vec.push_back(1); vec.push_back(3); vec.push_ba...
2019-07-31 22:02:57 192
原创 C++ STL transform和for_each的基本使用
#include <algorithm>#include <vector>#include <iostream>#include <functional >#include <iterator>using namespace std;void printV(vector<int> &v){ for ...
2019-07-31 21:16:28 233
原创 STL 预定义函数对象和函数适配器
1.算术函数对象预定义的函数对象支持加、减、乘、除、求余和取反。调用的操作符是与 type 相关联的实例加法: plus<Types> 如:plus<string> stringAdd; sres = stringAdd(sva1,sva2);减法: minus<Types>乘法: multi...
2019-07-17 21:37:33 134
转载 stl算法设计理念_一元函数对象和一元谓词
函数对象,一元谓词,这些才听,觉得有点陌生,函数对象: 重载函数调用操作符的类,其对象常称为函数对象(functionobject),即它们是行为类似函数的对象。一个类对象,表现出一个函数的特征,就是通过“对象名+(参数列表)”的方式使用一个类对象,如果没有上下文,完全可以把它看作一个函数对待。这是通过重载类的operator()来实现的。“在标准库中,函数对象被广泛地使用以...
2019-07-17 21:01:37 171
LICEcap(免安装)
2019-02-19
MFC程序开发参考大全
2018-10-30
More Exceptional C++中文版
2018-10-29
C++标准程序库 [德] Nicolai M.Josuttis
2018-10-22
MSDN Library安装版
2018-10-20
天若识别OCR
2018-10-20
OllyDbg汉化版
2018-10-20
[MFC.Windows程序设计(第2版)].(Programming.Windows.with.MFC,.2nd.Edition).Jeff.Prosise
2018-10-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人