c++
岚岚路
这个作者很懒,什么都没留下…
展开
-
trie字典树解决问题
问题:Xuemei’s question时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 256.000MB,其他语言512.000MB64bit IO Format: %lld题目描述Several weeks ago, a beautiful xuemei from College of Biology ask LYX a bioinformatics question...原创 2019-11-27 15:36:28 · 354 阅读 · 0 评论 -
adt邻接表和邻接矩阵解决问题(数据结构实验)
题目:1. 【问题描述】l 需要分别基于邻接矩阵和邻接表来实现图ADTl 需要实现图的各个基本操作l 小明最近在学习数据结构中图的相关知识,他需要输出有向图的邻接矩阵并找出有向图中出度最大的点。你能帮他解决这个问题么?【输入形式】每一组第一行有两个数n、m表示n个顶点,m条有向边。输入顶点信息,并用空格隔开,顶点信息以大写字母表示接下来有m行,每行三个数u、v、w代表权值为...原创 2019-11-20 17:24:43 · 1486 阅读 · 13 评论 -
tinystl实现(第七步:Utility.h)
经过长时间的学习终于可以开始tinystl的仿(chao)写工作了,本文参考了这位大佬的github,坦白讲我只是补充了注释,因为tinystl的代码真的非常经典而我又没什么这种大型项目的经验,所以只能这样做,不过相信能够有助于大家的学习#强烈建议按顺序阅读本专栏在本篇中我们实现了pair这个非常基础的结构,其中<,>,<=,>=等函数的实现之间的相互互动非常有趣,值得...原创 2019-11-10 13:12:05 · 533 阅读 · 1 评论 -
tinystl实现(第四步:allocator.h)
经过长时间的学习终于可以开始tinystl的仿(chao)写工作了,本文参考了这位大佬的github,坦白讲我只是补充了注释,因为tinystl的代码真的非常经典而我又没什么这种大型项目的经验,所以只能这样做,不过相信能够有助于大家的学习#强烈建议按顺序阅读本专栏allocator.h是alloc.h和construct.h的直接上级,在这个文件中我们看到了很多我们似曾相识的语句,回忆它们与之...原创 2019-11-09 13:07:14 · 520 阅读 · 0 评论 -
tinystl实现(第一步:alloc.h)
经过长时间的学习终于可以开始tinystl的仿(chao)写工作了,本文参考了这位大佬的github,坦白讲我只是补充了注释,因为tinystl的代码真的非常经典而我又没什么这种大型项目的经验,所以只能这样做,不过相信能够有助于大家的学习alloc.h文件是项目的开始部分,无论是哪一个容器,都需要分配内存才能行动,alloc.h文件也是内存分配中的最基石,接下来让我们看代码#pragma on...原创 2019-11-08 21:34:10 · 1838 阅读 · 6 评论 -
avl平衡树代码
#include#include#include#include"node.h"#include"binarytree.h"#include"binarytreecode.h"using namespace std;/*int max(int a, int b){return a > b ? a : b;}int deep(node *p){if §return ...原创 2019-10-30 17:01:41 · 105 阅读 · 0 评论 -
c++再学习(内存管理函数的重载)
在实现stl的过程中遇到了很多内存管理方面的问题,这里做个笔记以便复习,也供大家参考。1.内存管理的手段malloc()/free():malloc()是c语言中就存在的内存管理函数(库函数),不能够被重载,需要手动传开辟空间的大小,失败返回NULL,错误形式返回错误码,返回值为void*(不了解什么是void*的,可以查看这篇博客),通过强制转型与分配的对应位置一致。new()/delet...原创 2019-10-26 12:31:31 · 259 阅读 · 1 评论 -
c++再学习(void*指针是什么)
我们曾经见过int指针,float指针,也见过各种类指针,但是void指针是什么东西呢?一言蔽之,指向地址的指针。void指针并不指向任何确切的类型(但不可理解为void指向任何类型),当指向的地址上的内存的类型被指定时,void指针在调用时被强制转型为该类型的指针。因此,void指针的操作比其他指针要少,只能和另一个指针比较,向函数传递或者被函数返回,给同类型的指针赋值,但是,不能用vo...原创 2019-10-26 10:38:04 · 571 阅读 · 0 评论 -
二叉链表实现后序遍历和中序遍历返回层序遍历(数据结构实验)
node.h#pragma oncetemplate <typename T>class node{public: T val; node *left; node *right; node() { left = nullptr; right = nullptr; }; node(T v) { val = v; left = nullptr; ri...原创 2019-10-23 16:47:27 · 276 阅读 · 0 评论 -
c++再学习(union使用)
union这个关键字很少见,但是该用到还是会用到的,所以这里介绍一下Union和struck类似,最大的不同在于,可以存储不同类型的数据,其所占内存大小以最大的为准(换而言之,一个能装char,double和int数据的union所占内存大小为double所占内存(8字节))union所有类型的数据共用同一段内存空间,换而言之,当你对union关键字定义的变量重新赋值时,前一个值(不管它的类型...原创 2019-10-03 22:08:04 · 226 阅读 · 0 评论 -
c++再学习(宏的基础应用/常用的宏)
在c++中,宏是非常常用的,本篇博客粗略地对宏的使用和常用技巧做一些归纳。宏的基础用法:#define maxinum 1000这样我们就将maxinum定义为1000(注意宏不需要分号)与此同时,正如之前介绍lamba的内容所说,我们在调用宏时采取的是直接取代法,所以难免会出现问题比如:#define add(a,b) a+b以上宏在cadd(a+b)时会被翻译为ca+b,显然...原创 2019-10-02 23:24:30 · 174 阅读 · 0 评论 -
线段树应用(杭电1166)
线段树应用Problem DescriptionC国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的人数都有可能发生变动,可能增加或减少若干人手,但这些都逃不过C国...原创 2019-09-28 14:44:13 · 152 阅读 · 0 评论 -
c++再学习(template)
最近在tiny c++的学习过程中接触了template这个这个关键词,知道这是模板类(其实应该学过只是记不起来)那么,什么是模板类呢?就是函数针对的类型未定,根据你输入的类型进行变化。打个比方说,想比较int ,float,double等各种数据类型的大小,但又不想设置多个函数,那就适合使用template。template <typename T>T mmax(T a,T...原创 2019-09-25 17:32:33 · 102 阅读 · 0 评论 -
lis算法(最长上升子序列)
提问:找出,1,5,6,4,5,4,8,4,5,6,1,2,3,1中的最长上升子序列常规思路:对于5,往前回溯,找到最大上升子序列,然后再对于6找到最长上升子序列(这时5前面已经放了一个比他小的1做前面,而1没有)如下图所示依次标注1,5,6,4,5,4,8,4,5,6,1,2,3,10,1,2,1,2,2,3,3,3,3,1,2,3,2复杂度为NN但是如果采用二分查找进行回溯,复杂度...原创 2019-09-18 19:57:44 · 147 阅读 · 1 评论 -
c++堆排序
首先,我们明确一个问题,什么是堆?堆是一种二叉树,其特点是子节点均大于或小于父节点,大于的称为最大堆,小于的称为最小堆——那么是不是我们只要建立出一个最大堆,然后把它从上到下遍历就可以实现排序了呢?答案是否定的。[图片来自博客](http://blog.csdn.net/hrn1216/article/details/51465270)显然,图中是一个最小堆,但它遍历得出的数组并不是有序数...原创 2019-04-02 13:41:50 · 118 阅读 · 0 评论 -
动态规划解决子数组最大和问题
我们常常在刷题过程中遇到的问题是在一连串整数中找到其中最大的子串和,比如在{1,2,-3,1}中找到其中和最大的连续数,而遍历全部情况则需要至少n2的时间复杂度,这显然是无法接受的,那么,我们怎么解决这种问题呢?如果整个数组都是正数,那么我们也就不用麻烦了,可以直接全部相加,所以我们解决问题的着力点就在负数。首先,想一想,如果一个数组的第一个数就是负数,那么你会不会把它加进你的数字串里呢?显然...原创 2019-05-30 17:20:24 · 595 阅读 · 0 评论 -
leetcode24题题解
leetcode第24题我们的任务是有部分地反转链表,那么首先我们会想起反转链表,那么我们先把链表反转给写出来: ListNode* reservelink(ListNode *l) { ListNode *p=l; ListNode *r; ListNode *q=l->next; p->next=NULL; while(q) { r=q->n...原创 2019-05-28 20:41:00 · 468 阅读 · 0 评论 -
c++再学习(内联函数)
什么是内联函数?以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销,内联函数提升程序运行的效率。内联函数与普通函数执行过程有何不同?普通函数的执行过程中,首先要保存寄存器的位置,然后传入参数——这时程序转到函数处运行,然后再返回,而内联函数不需要这么做,编译器会在程序运行前把函数嵌入,运行时程序顺序进行,不需要前往函数处。什么样的函数适合...原创 2019-08-20 16:01:14 · 166 阅读 · 0 评论 -
预处理器,编译器,汇编器,连接器
http://www.cnblogs.com/hutao886/p/5614296.htmlhttp://www.cnblogs.com/chenwu128/archive/2012/06/01/2531425.html1.2程序被其它程序翻译成不同的格式hello程序的生命周期是从一个源程序(hello.c)(称为高级c语言)开始,被其它程序转化为一系列的低级机器语言指令,这些指令按照一种...转载 2019-08-20 16:06:52 · 184 阅读 · 0 评论 -
c++再学习(namespace)
namespace是什么?namespace就是名称的作用范围,就好比说一个千万人参与的开源项目,里面不可避免的会有很多函数名相互冲突,这个时候,为了帮助程序准确地找到对应的函数而不走错,就需用到namespace。而我们在cpp中经常用到的using namespace std又是怎么一回事呢?其实namespace std就是c++标准程序库中所有标识符的定义处,只要加上这个词条就可以一...原创 2019-08-20 16:55:10 · 85 阅读 · 0 评论 -
c++再学习(函数指针与lamba)
什么是函数指针?int cmp(int a,int b){return a<b;}//函数对象int (*cmp)(int a,int b)//函数指针两者只有写法不同,用法完全相同。为什么要使用函数指针?1函数指针可以把函数作为参数传入函数中(比如非常常用的qsort),可以提高函数的可复用性和可拓展性。2另外,有些地方必须使用函数函数指针才能完成给定的任务,如linux系统...原创 2019-08-26 15:45:17 · 334 阅读 · 0 评论 -
c++再学习(左值与右值)
什么是左值,右值?两者有什么区别?左值是变量,是地址值,指向的是存储数据的内存,文字不能作为左值。右值是数据值,可以被存储在地址当中,是被读取的值——你可以对它赋值,销毁,但不可以修改(其符号为&&),文字表达式可以作为右值。举个例子:++i–违法,因为++运算符要求一个可以修改的左值,但是显然,i–是个不可修改的右值。注意:当你使用右值时,必须满足以下两个条件:1,该对...原创 2019-08-30 16:26:19 · 235 阅读 · 1 评论 -
c++再学习(浅拷贝,深拷贝与移动构造函数)
浅拷贝是什么?深拷贝是什么?两者有什么区别?浅拷贝相当于添加了一个指向对象的指针,和原对象公用同一块内存,如果分别调用其构造函数,则会造成runtime error。深拷贝则是新分配了一块内存,并用一个新的指针指向它。显然,深拷贝的消耗比浅拷贝要大,但是很多时候,我们不得不使用深拷贝——尤其是需要保存修改数据前状态时。那么,什么是移动构造函数呢?移动构造函数会获取原对象的右值引用(什么是...原创 2019-08-30 16:53:21 · 407 阅读 · 0 评论 -
c++二叉树(一)二叉树的建立与遍历
树是一种常用的数据结构,也是必须掌握的数据结构,最近准备几篇博客梳理一下自己对树的学习,也复习一下c++。首先对于树的设计,无非就是本身数据加上左孩子右孩子两个指针。struct node{ int num; node *left; node *right;};有了节点,我们又要怎么建树呢?这里笔者提供两种建树方法第一种node* createtree(int a[],in...原创 2019-04-01 13:58:28 · 428 阅读 · 0 评论