- 博客(16)
- 收藏
- 关注
转载 C++ STL之vector用法总结
介绍vector是表示可变大小数组的序列容器。 就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。 本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的数组,...
2019-05-03 15:17:13
167
转载 关联容器的使用【C++】
关联容器和顺序容器有着根本的不同:关联容器中的元素是按关键字来保存和访问的。与之相对,顺序容器中的元素是按它们在容器中的位置来顺序保存和访问的。关联容器支持高效的关键字查找与访问。 C++的容器类型可以分为顺序容器和关联容器两大类。关联容器支持通过键值来高效的查找和读取元素,这是它和顺序容器最大的区别。两种基本的关联容器类型是map和set。map的元素以键-值对的形式组织:键用作元素在map...
2018-12-08 01:14:22
224
原创 Shell程序设计(Linux )
shell编程:解释型语言 ---- 运行时需要一个解释器来解释执行 (同为解释型语言的还有python)c语言:编译型语言shell是一个作为用户与Linux系统间接口的程序,他允许用户向操作系统输入需要执行的命令。变量 (本地变量 环境变量 参数变量)在shell里,使用变量之前通常并不需要事先为他们做出声明,只是在给他们赋初值时来创...
2018-11-25 21:07:10
970
原创 迭代器模式(二)【C++】
本期重点:空间配置器,容器空间配置器:把内存的开辟和对象的构造分开。把对象的析构和内存的释放分开。空间配置器的实现如下:// 给容器实现空间配置器Allocatortemplate<typename T>struct Allocator{ // allocate开辟内存 T* allocate(size_t size) { return (T*)mallo...
2018-11-16 17:31:41
188
原创 迭代器模式(一)【C++】
本期重点:迭代器,友元函数vector(向量):C++中的一种数据结构,确切的说是一个类,它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的。首先,我们可以自己实现一个字符串类型的容器。class CMystring{public: CMystring(char*ptr = NULL) { if (ptr ==...
2018-11-16 15:35:19
208
原创 继承与多态【C++】
两个类间的关系:组合与继承继承:可以使用现有类的所有功能,并在无需编写原来的类的情况下对这些功能进行扩展。通过继承创建的新类称为“子类”或“派生类”。 被继承的类称为“基类”,“父类”或“超类”。继承的作用:代码的复用访问权限派生类对象怎么构造在派生类构造函数的初始化列表中,指定基类成员的构造方式class Base{public: Base(int...
2018-11-14 19:55:18
170
原创 智能指针【C++】
智能指针的作用:堆内存的申请和释放都由程序员自己管理。普通指针:需要程序员手动释放,容易造成内存泄漏(比如忘记手动释放,或者程序异常)和二次释放的问题。智能指针:程序结束自己释放,不需要程序员手动释放。所以不存在内存泄漏智能指针其实就是利用一种叫做RAII(资源获取即初始化)的技术对普通指针进行封装。所以智能指针的实质是个对象(模板类)智能指针的作用是防止忘记调用delet...
2018-10-31 18:07:56
734
原创 C++【回忆前面】
用户空间C和C++的区别C++:参数带默认值的函数 inline内联函数 函数重载 const 修饰的为常量。 C语言const修饰的为常变量 引用 new/delete C语言是 malloc/free 对象的声明周期 构造 析构 拷贝构造 operator=1.函数调用传参,传对象的引用2.函数返...
2018-10-24 22:54:30
130
原创 Linux库的创建及使用
静态库的创建及使用动态库与静态库基本相似,就是创建库的命令不同,还有运行的时候有点差异【这里把静态库和动态库的 创建和运行都过一遍】 ...
2018-08-21 12:26:19
158
原创 c++(三)【类模板】
【1】类型进行参数化,模板的意义是什么?可以定义类型变量,来接受用户传入的类型template<> : 定义模板参数列表typename T,typename E, typenameR :类型变量,可以定义很多,用逗号分隔 eg: template<typename T>类模板 =》 实例化 =》模板类【2】模板的代码,在没有实例化...
2018-08-09 14:03:29
153
原创 c++【基础(二)】
【1】空struct是0,而空类是1的原因 struct Data{};struct Data data(变量);sizeof(Data)=0;struct类型,在C语言中,是定义结构体。data只需要开辟内存就可以了 class/struct Data{};Data data(对象);sizeof(Data)=1;struct在c++中,也是定义类...
2018-08-01 15:02:53
127
原创 BF算法与KMP算法
两个字符串匹配,匹配成功时,i和j同时后移一位。直至子串匹配完(即j>lensub)而BF算法和KMP不同之处在于:BF算法,当匹配失败时,j直接回到0位置,i回到上次的位置加一(即i-j+1)。这样前面匹配过的又要重新来一遍,浪费了好多时间 KMP算法,在匹配失败的时候,i不动,j回到他next数组对应的下标位。//BFint BF(char *s,char *sub...
2018-07-29 13:10:21
820
原创 c++【基础(一)】
面向对象(oop):c++ Java PHP Python面向对象(oop)语言的四(三)大特征是什么?抽象-------如果问三大特征,省略这个 封装/隐藏:在语言上,是通过访问限定符体现的(public公共变量,哪里都可以访问 protected受保护的,类内和子类可直接访问 private私有的,只有类内可直接访问) 继承 多态面向对象:...
2018-07-27 17:19:20
251
原创 八大排序
一.冒泡排序(交换排序)思想:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。(从头扫描待排序序列,第一趟排序,对n个记录进行排列,在扫描过程中顺次比较相邻的两个元素。若按升序排列,则把较小的数往前移动。接着进行第二趟排列,对n-1个记录进行排列,如此反复,直到排好序为止。) 时间复杂度:最好情况O(n) 最坏情况O(n^2) 平均情况O(n^2) 空间复杂度...
2018-07-27 16:01:54
142
原创 Linux常用的基本命令
Linux命令总结 mkdir:创建目录文件 touch:创建普通文件 ls:查看当前目录下有哪些文件 ls -l 或 ll:查看文件的详细信息 chmod:改变文件权限 rw-(主[u])r-x(同组[g])-wx(其他[o])a.文字设定:chmod u+x 文件名(一次只能改一个地方的。加号和减号对应给权限或取消权限)b...
2018-07-27 14:56:08
223
原创 第一节(hello word)
一:函数体基本结构int//返回值 main//函数名(参数) {函数体 } 二:进制间的转换 【十进制转二进制】128 64 32 16 8 4 2 1 十进制从前往后依次比较,大于等于填1,否则填0三:charchar ch='a';...
2018-05-31 20:21:16
149
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人