c++
NietzscheI
这个作者很懒,什么都没留下…
展开
-
lambda表达式
为什么要有lambda表达式#if 0int main(){ int array[] = { 4, 1, 8, 5, 3, 7, 0, 9, 2, 6 }; //默认是排升序!! sort(array, array + sizeof(array) / sizeof(array[0])); //改变规则,排降序 sort(array, array + sizeof(array)...原创 2019-11-04 18:46:40 · 189 阅读 · 0 评论 -
C++多态
多态多态就是多种形态,同一行为产生多种的状态。多态是在不同继承关心的类对象,去调用同一函数,产生了不同行为,多态在继承的继承上的。多态的两个条件:1.基类中必须包含虚函数,在派生类中必须对基类的虚函数完成重写。2.虚函数的调用:必须通过基类的指针或者引用调用虚函数。表现方式:在程序运行时,基类的指针或引用指向不同类的对象时,调用不同类的虚函数。只要成员函数和基才能被virtual所修...原创 2019-10-28 09:08:26 · 199 阅读 · 0 评论 -
AVL树
AVL树二叉搜索树虽然可以缩短查找的效率,**但如果数据有序或接近有序二叉搜索树退化为单支树,查找元素相当与在顺序表中搜索元素,效率低下。**当向二叉搜索树中插入新节点后,如果能保证每个节点的左右子树高度之差绝对值不超过1(需要对树中的节点进行调整),即可降低树的高度,从而减少平均搜索长度。空树也是AVL树。AVL树的性质是:它的左右子树都是AVL树左右子树高度之差(简称平衡因子)的绝...原创 2019-10-26 21:30:21 · 163 阅读 · 0 评论 -
C++智能指针
为什么要有智能指针?在C++中没有垃圾回收机制,用户需要自己来对已经申请的内存空间进行释放,如果不释放会存在内存泄漏问题。如果代码抛异常,资源没有回收也可能产生死锁。智能指针的使用首先介绍一下RAII,它是Resource Acquisition Is Initialization,即资源获取时就初始化,将资源使用方式用类的方式来进行封装。在构造函数中将资源进行初始化,在析构函数中清理资源。...原创 2019-10-25 20:45:16 · 125 阅读 · 0 评论 -
c++内存管理
1.c/c++这程序内存区域划分栈:又叫堆栈,非静态成员变量/函数参数/返回值等等,栈是向下增长的内存映射段:它是高效的i/o映射方式,用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内存,做进程间通信。堆:用于程序间运行时的动态内存分配,堆是可以向上增长的数据段:存储全局数据和静态数据代码段:可执行代码和只读常量2.c语言中动态内存管理方式void* malloc (...原创 2019-08-12 19:43:54 · 161 阅读 · 0 评论 -
c++浅拷贝与深拷贝
先看下面这份代码class String{public: String(const char* str="") { //构造string类对象,如果传递nullptr指针,认为程序非法,此处断言下 if (nullptr == str) { assert(false); return; } _str = new char[strlen(str)+1]; ...原创 2019-08-17 17:38:14 · 122 阅读 · 0 评论 -
c++string的基本实现
class String{public: typedef char* Iterator; friend ostream& operator<<(ostream&_cout,String&s); String(const char* str = "") { //构造string类对象时,如果传递nullptr时,认为非法,加上断言 if (n...原创 2019-08-17 22:02:54 · 133 阅读 · 0 评论 -
c++list
list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不关联的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效。与其他序列式容器相比(array,vector,de...原创 2019-08-26 14:42:09 · 423 阅读 · 0 评论 -
c++stack
stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的容器,并提供一组特定的成员函数来访问其元素,讲特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。stack的底层容器可以是任何标准...原创 2019-08-29 22:48:39 · 543 阅读 · 0 评论 -
c++继承简单的自我理解
什么是继承继承机制是面向对象程序设计使用代码可以复用的重要手段,它允许程序员保持原有类的特性的基础上进行扩展,增加功能,这样产生的新的类,称为派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂认知的过程。继承是类设计层次的复用。继承方式public继承protect继承private继承类成员/继承方式public继承protect继承private继承...原创 2019-10-11 16:36:24 · 189 阅读 · 0 评论 -
c++vector基本实现
#include<iostream>#include<algorithm>#include<assert.h>#include<string>using namespace std;namespace bit{ template<class T> class Vector { public: //Vector的迭代...原创 2019-08-25 19:48:32 · 277 阅读 · 0 评论 -
c++string类
1.string是表示字符串的字符串类2.该类的接口与常规容器的接口基本相同。string类对象的常见构造void TestString(){ string s1;//构造一个string空类对象s1 string s2("hello bit");//用c字符串的形式构造一个string类s2 string s3(10, 'a');//用10个字符‘a’构造string类对象s3 ...原创 2019-08-15 21:56:03 · 222 阅读 · 0 评论 -
c++类与对象入门
c语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过步骤解决问题c++面向对象,关注的是对象,将一件事情拆分成不同对象,靠对象之间的交互完成类的定义class className{ //类体:由成员函数和成员变量组成 };class为定义类的关键字,className为类的名字,{}中为类的主体,类中的元素为类的成员,类中的数据为类的属性,默认访问私有struc...原创 2019-03-14 23:01:13 · 160 阅读 · 0 评论 -
c++单例模式
1.设计模式设计模式是一套被反复使用,多数人知晓的,经过分类的,代码设计经验的总结。(套路)设计模式的目的:为了代码可重用性,让代码更容易被他人理解,保证代码的可靠性。设计模式使代码编写真正工程化,设计模式是软件工程的基石脉络,如同大厦的结构一样。2.单例模式一个类只能创建一个对象,即单例模式,该模式可以保证系统中该类只有一个实例,并提供一个访问它的全局访问点,该实例被所以程序模块共享。...原创 2019-08-13 21:17:09 · 114 阅读 · 0 评论 -
c++内存泄漏
1.内存泄漏内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存情况。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。2.内存泄漏分类堆内存泄漏堆内存指的是程序执行中依据须要分配通过malloc/calloc/realloc/new等从堆中分配的一块内存,用完后必须通过调用相应的free或者delete删掉。...原创 2019-08-13 21:40:08 · 131 阅读 · 0 评论 -
c++static成员
1.概念声明static的类成员称为类的静态成员,用static修饰的成员变量,称之为静态成员变量;用static修饰的成员函数,称为静态成员函数。静态成员变量一定要在类外井下初始化!!2.特性静态成员为所以类对象所共有,不属于某个实例。静态成员变量必须在类外面定义,定义时不添加static关键字,类外定义实际是分配内存静态成员函数没有隐藏的this指针,不能访问任何非静态成员变量静态...原创 2019-08-10 16:07:24 · 129 阅读 · 0 评论 -
c++友元
1.友元友元分为友元函数和友元类。友元提高了一种突破封装的方式,有时提供了便利。但是友元会增加耦合度,破坏了封装,所以友元不宜多用。2.友元函数当我们尝试取重载operator<<,然后没法将operator<<重载成成员函数。因为cout的输出流对象和隐藏的this指针在抢占第一个参数的位置。this指针默认的是第一个参数也就是左操作数,但实际使用cout需要的是...原创 2019-08-10 17:22:22 · 202 阅读 · 0 评论 -
c++内部类
1.概念如果一个类定义在另一个类的内部,这个类就叫内部类。注意此时这个内部类是一个独立的类,它不属于外部类,更不能通过外部类的对象取调用内部类。外部类对内部没有任何优越的访问权限。2.特性内部类可用定义在外部类的public,protected,private都是可以的注意内部类可以直接访问外部类中的static,枚举类,不需要外部类的对象/类名。sizeof(外部类)=外部类,和内部类...原创 2019-08-10 17:46:16 · 166 阅读 · 0 评论 -
c++模板
1.泛型编程问题提出:怎么编写一个通用的交换函数呢?泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。2.函数模板函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本。template<typename T>void Swap(T& left, T& right){ T te...原创 2019-08-14 22:44:56 · 158 阅读 · 0 评论 -
c++vector迭代器失效问题
1.vector是表示可变大小数组的序列容器2.就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理...原创 2019-08-24 21:34:53 · 351 阅读 · 0 评论 -
c++STL简介
1.什么是STLSTL是c++标准库的重要组成部分,不仅仅是一个可复用的组件库,而且是一个保罗数据结构与算法的软件框架。2.STL的六大组件仿函数:greater less算法:find swap reverse sort merge迭代器:iterator const_iterator reverse_iterator const_iterator空间配置器:allocator容器...原创 2019-08-15 21:13:28 · 384 阅读 · 0 评论 -
c++入门
c语言是结构化和模块化的语言,适合处理较小规模的程序,不适合复杂编写。c++、 面向对象语言,c++98是c++第一个标准版本命名空间通过范围限制,解决命名冲突。对标识符的名称进行本地化,以避免命名冲突或名字污染命名空间定义使用namespace关键字,后面跟命名空间的名字,然后接一对{}即可::作用域限定符int a=10;namespace bit { int ...原创 2019-03-14 22:52:57 · 117 阅读 · 0 评论