
记录知识
抖抖认真了
要成为合格的程序员
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
红黑树
红黑树得定义: 其中,条件(1)和(2)意味着红节点均为内部节点,且其父节点及左、右孩子必然存在。另 外,条件(3)意味着红节点之父必为黑色,因此树中任一通路都不含相邻的红节点。 由此可知,在从根节点通往任一节点的沿途,黑节点都不少于红节点。除去根节点本身,沿途所经黑节点的总数称作该节点的黑深度(black depth),根节点的黑深度为0,其余依此...原创 2020-02-17 16:16:04 · 783 阅读 · 0 评论 -
B-树和B+树
在如今,随着数据库存储量越来越大,实践证明,分级存储才是行之有效的方法。在由内存与外存(磁盘)组成的二级存储系统中, 数据全集往往存放于外存中,计算过程中则可将内存作为外存的高速缓存,存放最常用数据项的 复本。借助高效的调度算法,如此便可将内存的“高速度”与外存的“大容量”结合起来。 两个相邻存储级别之间的数据传输,统称I/O操作。各级存储器的访问速度相差悬殊,故应 尽可能地减少I...原创 2020-02-16 17:06:50 · 223 阅读 · 0 评论 -
STL中的空间配置器关于free_list的节点的union使用
配置器中free_lists的结构如下:union obj{ union obj* free_list_link; char client_data[1];}因为为了维护链表。每个节点即需要用指针来指向实际区块,同时还要链接着下一个空闲节点。从而每个节点就需要额外的指针来指向下一个空闲节点,这就造成了额外负担。但是在实际赋值时,你只会二选一,要么表示实际区块,要么就表示...原创 2020-02-12 22:25:39 · 821 阅读 · 1 评论 -
重建二叉树
我看剑指offer上写的代码很长,于是我就没看,我就根据书中的两张图,其实有那两张图就够了,这两张图就表示的二叉树的结构关系 我们根据这张图,就可以知道,当输入一个数组,在前序遍历中,第一个节点肯定是根节点,那么在后序遍历中,在root节点前的肯定是左子树,root节点后肯定是...原创 2020-02-10 17:33:17 · 136 阅读 · 0 评论 -
算法题-------关于单调栈的应用
在关于一行有高度的数字中,比如需要统计能看到的数字等等时,利用这种单调栈的数据结构就可以很好的解决问题;比如现在有一行数据是2 6 5 4 3 7 1,且这是每个人的身高,每个人向右看,那么就统计每个人能看到的头顶的数量;解法一就是,在每一个人处开始,向右遍历,比较身高,那么这个时间复杂度就为O(n^2);如果利用单调栈,那么就可以实现O(n)的时间复杂度;此时使...原创 2020-02-08 16:07:33 · 425 阅读 · 0 评论 -
单例模式
单例 Singleton 是设计模式的一种,其特点是只提供唯一一个类的实例,具有全局变量的特点,在任何位置都可以通过接口获取到那个唯一实例;并且不允许用户自行创建和赋值;其特点:全局只有一个实例:static 特性,同时禁止用户自己声明并定义实例(把构造函数设为 private) 线程安全 禁止赋值和拷贝 用户通过接口获取实例:使用 static 类成员函数其中有两种实现方式:懒汉...原创 2020-02-03 22:54:58 · 112 阅读 · 0 评论 -
c++-----------------野指针
野指针,也就是指向不可用内存区域的指针。如果对野指针进行操作,将会使程序发生不可预知的错误,甚至可能直接引起崩溃。野指针不是NULL指针,是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是野指针是很危险的,也具有很强的掩蔽性,if语句对它不起作用。造成野指针的常见原因有三种:1、指针变量没有被初始化。任何...转载 2019-10-18 22:42:36 · 143 阅读 · 0 评论 -
c++记录知识----------------实现一个像vector的动态内存管理类
class StrVec{private: static allocator<string> alloc; //静态变量,用来分配元素 string *elements; //首元素 string *first_free; //指向第一个空闲的元素 string *cap; //指向数组尾后位置的元素 //检查内存是否够用 void c...原创 2019-06-20 21:50:07 · 151 阅读 · 0 评论 -
记录c++知识--------实现一个行为像指针的类(引用计数)
class hasptr{private: string *ps; int i; int *use;public: //这种默认构造函数挺好的,即使没给值,也会自动给一个默认空值 hasptr(const string &s = string()) :ps(new string(s)), i(0), use(new int(0)) {}; //拷贝构造函数 hasp...原创 2019-06-17 20:52:18 · 196 阅读 · 0 评论 -
一个很简单的小数据结构转换问题------学会利用辅助结构来拆分问题,可以很好的实现算法
//用栈记录最小元素template<typename T>struct M_stack { void push(T e) const { if (!min_stack.empty()) { m_stack.push(e); (min_stack.top() > e) ? min_stack.push(e) : min_stack.push(min_...原创 2019-07-28 22:59:26 · 154 阅读 · 0 评论 -
c++---------数据结构—堆-----堆排序
这里只说一点,根据一个大小为n的数组,然后进行批量的建堆;其用的是Floyd算法,它首先在LastInetral_node=(n-2)>>1;然后依次遍历其内点,然后进行下滤算法:(图借用邓俊辉的数据结构) 可以看出,其时间复杂度为:一颗n个节点的完全二叉树,其内部节点为K= n/2 - 1;从而就需...原创 2019-07-22 22:24:55 · 206 阅读 · 0 评论 -
用数组结构实现栈和队列------------使用辅助的数据,可以很简单的实现
栈:我只需要记录,每一次push后数组的最后一个位置end和此时数组里实际装的个数num;如果end超过数组容量就显示满了;否则end++pull时,就end--;如果num==0;则说明栈空了队列也是一样,我只需要每次记录第一个位置start,和末尾元素的位置end,和此时元素个数num,pull时就start++;num++;如果start正好等于容量,就start=0;即循环利用...原创 2019-07-26 23:12:57 · 121 阅读 · 0 评论 -
c++---------关于list的排序
我今天敲了一个小代码,使用了list容器,但是我想将list里面的元素vector<int>按照降序排列,结果发现总是报错,sort(sum.begin(), sum.end(), [](const vector<int>& lhs, const vector<int>& rhs) {return lhs[0] > rhs[0]; }...原创 2019-09-26 22:52:25 · 1539 阅读 · 0 评论 -
记录一点c++知识
class employee{public: string name; int ID; employee(const string & m_name):name(m_name),ID(number++) {}; static int numb() { //类外初始化 return 0; }private: static int number; };...原创 2019-06-16 16:31:29 · 116 阅读 · 0 评论 -
树的广度优先,深度优先-----------好的代码
template <typename Tv, typename Te>template <typename PU>void GraphMatrix<Tv, Te>::pfs(int s, PU prioUpdater){ reset(); int v = s; do { if (UNDISCOVERED == status(v)) { ...原创 2019-05-01 17:57:53 · 289 阅读 · 0 评论 -
c++----------------IO流
/****** PersonInfo.h *********/#ifndef _DATA_PEOPLE#define _DATA_PEOPLE#include<iostream>#include <string>#include <vector>#include <stdexcept>#include <ioma...原创 2019-02-23 11:02:59 · 143 阅读 · 0 评论 -
C++ ----学习函数时,掌握知识的记录
参数传递中的两中类型 引用传递-------引用形参实际上是它对应的实参的别名,它与实参这个对象是绑定在一起的 当你需要修改实参的值时,你可以传入引用,这样避免拷贝,当拷贝大的类类型时,会低效; 2.值传递一种值是字面值; 比如就是实参所对应的类型;一种就是指针; 传递的就是地址,这里注意:进行指针拷贝时,拷贝...原创 2019-02-18 23:08:13 · 100 阅读 · 0 评论 -
c++---------函数传递,记录知识(以代码的方式呈现)
void error_msg(initializer_list<int> il){ int sum = 0; cout << il.size() << endl; for (auto beg = il.begin(); beg != il.end(); ++beg) { sum += *beg; ...原创 2019-02-19 23:00:40 · 140 阅读 · 0 评论 -
c++-------动态内存与智能指针(记录)
/*-----------StrBlob.h------------*/#ifndef _STRBLOB_DATA_#define _STRBLOB_DATA_#include<iostream>#include <string>#include <vector>#include <memory>using namespace s...原创 2019-02-26 10:28:13 · 153 阅读 · 0 评论 -
c++------------类的学习,实现一个图书的记录类
#ifndef _SALES_DATA_#define _SALES_DATA_#include<iostream>#include <string>#include <vector>using namespace std;//template <typename T>class Sales_data{public: //构...原创 2019-02-20 22:43:40 · 778 阅读 · 0 评论 -
c++------------动态关于最后一个程序
c++结束了动态和关联容器的学习,其实动态内存我还没有弄会,这个需要多做题,多体会;下面开始数据结构与算法的学习;务必效率和抓经时间;把该学的课程都不紧不慢的提上日程;加油!!!/*--------------- 关键字查询的类 --------------*/#ifndef _TEXT_QUERY_#define _TEXT_QUERY_#include<iost...原创 2019-03-02 16:27:20 · 122 阅读 · 0 评论 -
c++-----------------------关联容器操作以及动态内存
#include<iostream>#include <string>#include <vector>#include <sstream>#include <fstream>#include <memory>#include <map>#include <set>#include "...原创 2019-02-26 23:05:44 · 196 阅读 · 0 评论 -
c++-------------------数据结构,栈实现简单的计算机(只能是int型)
这里引入了一个小知识点,就是输出字符串中的数字,是ACII码值,所以必须进行转换,并且我传的是一个字符数组的指针的引用,这里让我又翻看c++的书,让我对传入数组,以及数组的指针以及引用有了很好的了解。char orderBetween(const char, const char);Stack<double> opera_num;Stack<char> op...原创 2019-04-03 23:17:54 · 204 阅读 · 0 评论 -
C++-------------深拷贝和浅拷贝以及函数重载问题
注意在类中有指针变量成员时,初始化的时候,一定要显示的给他分配动态内存; 指针变量成员一定要初始化,一定要显示的有构造函数(即动态分配内存),以及不是基本数据类型时,一定要有重载赋值函数 关于重载赋值函数和拷贝构造函数: 是否可以将视频里向量扩容代码中的: for (int i = 0; i < _size; i++) _e...原创 2019-03-29 11:50:01 · 327 阅读 · 0 评论 -
数据结构----先序遍历
二叉树的类:struct Node{ Node(int v = 0) :val(v),left(nullptr),right(nullptr) {}; int val; Node *left; Node *right;};先序遍历的递归版//先序遍历----递归void preorder_recursion(Node *node){ if (node) c...原创 2019-04-09 19:53:24 · 930 阅读 · 2 评论 -
数据结构-------二叉树的中序遍历
二叉树的类://树的节点struct Node{ Node(int v = 0) :val(v),left(nullptr),right(nullptr) {}; int val; Node *left; Node *right;};中序遍历----递归版//中序遍历----递归void inorder_recursion(Node *node){ if (no...原创 2019-04-13 22:20:12 · 127 阅读 · 0 评论 -
数据结构------后序遍历,不用栈实现和用栈实现
树的类://树的节点struct Node{ Node(int v = 0) :val(v),left(nullptr),right(nullptr) {}; int val; Node *left; Node *right;};递归://后序遍历----递归void postorder_recursion(Node *node){ if (node) { ...原创 2019-04-14 17:16:10 · 620 阅读 · 0 评论 -
c++-----------类的学习总结(以代码形式总结,记录)
/*********** screen.h *****************/#ifndef _SCREEN_DATA_#define _SCREEN_DATA_#include<iostream>#include <string>#include <vector>/* 总结一下: 类的构造中,还没...原创 2019-02-21 21:45:17 · 148 阅读 · 0 评论