C++
文章平均质量分 93
Insisting.
每天进步一点点ing。
展开
-
【C++】文件IO
C++的流有数据流动的意思。为了实现这种流动,C++定义了I/O标准类库,这些每个类都称为流/流类,用以完成某方面的功能。它的特性是:有序连续、具有方向性原创 2024-02-02 17:16:52 · 879 阅读 · 1 评论 -
【C++】C++11新特性(lambda表达式)
Lambda表达式是现代C++在C ++ 11和更高版本中的一个新的语法糖 ,在C++11、C++14、C++17和C++20中Lambda表达的内容还在不断更新。 lambda表达式(也称为lambda函数)是在调用或作为函数参数传递的位置处定义匿名函数对象的便捷方法。通常,lambda用于封装传递给算法或异步方法的几行代码 。Lambda有很多叫法,有Lambda表达式、Lambda函数、匿名函数原创 2024-02-02 12:51:37 · 563 阅读 · 0 评论 -
【C++】设计模式
单例模式,简单工厂模式,工厂方法模式,抽象工厂模式,建造者模式,代理模式。设计模式的六大原则,单一责任原则,开闭原则,里氏替换原则,依赖倒置原则,迪米特法则,以及接口隔离原则。原创 2023-10-04 17:01:25 · 1115 阅读 · 51 评论 -
【C++】C++11新特性
相比于C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。相比较而言,C++11能更好地用于系统开发和库开发、语法更加泛华和简单化、更加稳定和安全,不仅功能更强大,而且能提升程序员的开发效率。————————————————版权声明:本文为CSDN博主「The August」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:原创 2023-09-30 09:45:35 · 432 阅读 · 6 评论 -
【C++】C++11------右值引用
C++98中提出了引用的概念,引用即别名,引用变量与其引用实体公共同一块内存空间,而引用的底层是通过指针来实现的,因此使用引用,可以提高程序的可读性。为了提高程序运行效率,C++11中引入了右值引用,右值引用也是别名,但其只能对右值引用。原创 2023-09-28 19:28:50 · 647 阅读 · 8 评论 -
【C++】红黑树
红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。原创 2023-08-23 16:21:57 · 2778 阅读 · 182 评论 -
【C++】异常
异常是一种处理错误的方式,当一个函数发现自己无法处理的错误时就可以抛出异常,让函数的直接或间接的调用者处理这个错误。throw:当问题出现时,程序会抛出一个异常。这是通过使用 throw 关键字来完成的。catch: 在你想要处理问题的地方,通过异常处理程序捕获异常,catch 关键字用于捕获异常,可以有多个catch进行捕获。try: try 块中的代码标识将被激活的特定异常,它后面通常跟着一个或多个 catch 块。原创 2023-08-11 10:56:03 · 937 阅读 · 67 评论 -
【C++】map和set
我们已经接触过STL中的部分容器,比如:vector、list、deque、forward_list等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本身,其元素与元素之间并没有什么关联性。关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是结构的键值对,在数据查找时比序列式容器效率更高map和set就是树形的关联式容器,底层使用平衡搜索树,这篇文章讲将map,multimap,set,multiset的介绍和使用原创 2023-08-06 19:20:21 · 892 阅读 · 25 评论 -
【C++】多态
多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。就像我们日常生活中去买火车票,普通人去买火车票一般是原价,而学生去购票可能价格会所不同,学生买火车票一般会打折。1.必须通过基类的指针或者引用调用虚函数2.被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写// 这里常考一道笔试题:sizeof(Base)是多少?为什么这里会是8?原创 2023-07-27 18:19:50 · 691 阅读 · 11 评论 -
【C++】继承
与访问限定修饰符一样,继承方式也有三种分别是:public、protected、private而不同的继承方式对于不同访问方式的父类成员,在子类中的访问方式也不同。所以根据两两组合,父类成员在子类中就有9中访问方式。总结:1.基类private成员在派生类中无论以什么方式继承都是不可见的。不可见是指基类的私有成员还是被继承到了派生类对象中,但是语法上限制派生类对象不管在类里面还是类外面都不能去访问它。2.原创 2023-07-24 16:39:15 · 505 阅读 · 3 评论 -
【C++】模板(下)
我们实现了一个函数模板用来比较两个变量的大小,但是比较的类型有限,如果传入指针类型的变量,比较大小的结果往往不是我们所想要的,此时我们需要实现一个函数模板的特化用来处理特殊情况。通常情况下,使用模板可以实现一些与类型无关的代码,但对于一些特殊类型的可能会得到一些错误的结果,需要特殊处理,比如:实现了一个专门用来进行小于比较的函数模板。前面我们在使用模板参数的时候可以使用class,也可以使用typename定义模板参数,现在typename有了新的作用。1.必须要先有一个基础的函数模板。原创 2023-07-21 17:32:33 · 135 阅读 · 3 评论 -
【C++】list
1.list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。2.list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。3.list与forward_list非常相似:主要不同在于forward_list是单链表,只能单方向迭代。4.与其他的序列式容器相比(array,vector,deque),list在任意位置进行插入、移除元素的执行效率更好。原创 2023-07-18 09:07:36 · 932 阅读 · 0 评论 -
【C++】vector
1. vector是表示可变大小数组的序列容器。> 2. 就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。> 3. 本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。就时间而言,这是一个相对代价高的任务,因为每当一个新的元素加入到容器的原创 2023-07-15 17:43:13 · 935 阅读 · 2 评论 -
【C++】string
string的含义,string的常见接口及使用,以及string类的模拟实现。原创 2023-06-25 18:34:12 · 897 阅读 · 0 评论 -
【C++】模板(上)
如果在C++中,也能够存在这样一个模具,通过给这个模具中填充不同材料(类型),来获得不同材料的铸件(即生成具体类型的代码),那将会节省许多头发。巧的是前人早已将树栽好,我们只需在此乘凉。泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。原创 2023-05-18 10:23:57 · 88 阅读 · 0 评论 -
【C++】内存管理
/调用构造函数 free(p1);delete(p2);//调用析构函数 A * p3 =(A *) malloc(sizeof(A));//这里的赋初值其实就是隐式类型转化,构造加拷贝构造 编译器会自动优化为构造 A * p4 = new A [ 10 ] {//申请10个A类型的对象 free(p3);test02();return 0;原创 2023-05-17 08:29:46 · 77 阅读 · 0 评论 -
【C++】面向对象(下)
我们在面向对象上中说道,我们在创建对象的时候,编译器通过调用构造函数,给对象中的成员进行赋值。虽然上述构造函数调用之后,对象中已经有了一个初始值,但是不能将其称作为类对象成员的初始化,构造函数体中的语句只能将其称作为赋初值,而不能称作初始化。因为初始化只能初始化一次,而构造函数体内可以多次赋值。对于一些特殊类型的变量如果使用函数体赋值的方式赋初值是不能实现的。例如:引用,const,自定义(没有默认构造函数)这些成员变量。对于解决这些变量的初始化,C++中提供了初始化列表的方式初始化。初始化列表则可以理解原创 2023-05-12 08:13:55 · 130 阅读 · 1 评论 -
【C++】入门
/1. 普通的命名空间 namespace N1 // N1为命名空间的名称 {// 命名空间中的内容,既可以定义变量,也可以定义函数 int a;} } //2. 命名空间可以嵌套 namespace N2 {int a;int b;int c;int d;} } } //3. 同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。} }原创 2023-04-20 15:24:16 · 80 阅读 · 0 评论 -
【C++】面向对象
C++中类的关键字既可以用class,也可以用struct。常用的是class。类中的元素称为类的成员:类中的数据称为类的属性或者成员变量;类中的函数称为类的方法或者成员函数。int _age;return 0;类的两种定义方式①声明和定义全部放在类体中,需要注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。原创 2023-05-01 10:42:34 · 1070 阅读 · 2 评论