C++
文章平均质量分 57
向阳而生809
这个作者很懒,什么都没留下…
展开
-
C++ I/O流(一)——输出流
IO流可分为输入流和输出流,用于从设备(如键盘、文件、网络等)读取数据或向设备写入数据。C++标准库提供了丰富的IO流类,包括iostream、fstream、stringstream等,分别用于。原创 2024-05-15 11:59:25 · 609 阅读 · 0 评论 -
C++ 容器(四)——List操作
3、插入和删除效率高:由于双向链表的特点,list在任意位置进行插入和删除操作的效率都很高,不受元素数量的影响。4、不连续内存存储:list的元素在内存中不是连续存储的,因此插入和删除操作不会造成元素的移动。1、list内部以双向链表形式存储元素,每个节点包含指向前一个节点和后一个节点的指针。2、动态大小:list的大小可以根据需要动态增长或缩小,不需要预先指定容器的大小。只要运行逻辑和C语言链表一致,就是在C语言的基础上进行函数封装,方便用户使用。1)List添加及提取。3)删除指定位置的元素。原创 2024-05-12 13:17:39 · 298 阅读 · 0 评论 -
C++ 容器(五)——Set操作
set 是一种实用的关联容器,特别适用于需要对元素进行排序和去重的场景。但在需要随机访问、大量插入或删除操作的情况下,可能不是最优选择。原创 2024-05-12 14:12:54 · 412 阅读 · 0 评论 -
C++ 容器(六)——Map容器
其它代码} map类似于set,自动按Key排序(默认升序排序),键值对中的Key的数据值不能重复(自动去重) -> 键值对元素中的"键"一一对应/关联/映射到某个"值":map容器和set容器在底层都是通过红黑树来实现的,这使得它们具有快速的查找、插入和删除操作的特点。然而,map容器和set容器也有一些不同点,主要体现在存储结构和元素组织方式上,比如map容器是由。:set容器中的元素是唯一的,而map容器中的key也是唯一的。器,可以通过迭代器遍历容器中的元素。:map容器和set容器都支持迭代。原创 2024-05-12 14:55:10 · 314 阅读 · 0 评论 -
C++ 容器(三)——Vector操作
auto关键字用于自动推断it的类型,vec.begin()返回指向容器vec第一个元素的迭代器,vec.end()返回指向容器vec最后一个元素之后位置的迭代器。原创 2024-05-09 14:56:13 · 596 阅读 · 0 评论 -
继承经典案例
1、有成员属性width(长,int),成员属性height(宽,int)。2、将width和height设置为私有属性,并提供公开的get,set函数。3、有合理的构造函数,构造函数必须初始化height和width。自定义类表示正方形(Square)继承自矩形(Rectangle)要求:1、改写父类的set函数,保证当正方形修改边长时长和宽都会改变。2、有合理的构造函数,构造函数必须初始化Rectangle。原创 2024-04-18 12:36:16 · 151 阅读 · 0 评论 -
C++ 继承(二)
子类对象创建和销毁: 先调用父类构造函数,再调用子类构造函数,析构顺序与构造相反(即:没有父亲哪来的儿子)。原创 2024-04-18 12:21:14 · 323 阅读 · 0 评论 -
c++基础语法(一)
在C++中,cout用于输出内容到控制台,cin用于从控制台输入内容。原创 2024-04-09 14:06:35 · 341 阅读 · 0 评论 -
C++ 封装(二)
构造函数是一种特殊的方法,用于在创建对象时初始化对象的属性。在封装中,构造函数可以被用来封装对象的属性和方法,并确保对象在被创建时都被正确初始化。通过构造函数,我们可以控制对象的创建过程,隐藏对象的内部细节,以及提供统一的接口来访问对象的属性和方法。这样可以有效地实现封装,提高代码的可维护性和可复用性。作用:在创建对象的时候初始化对象(给成员变量进行初始化)原创 2024-04-13 14:24:23 · 307 阅读 · 0 评论 -
c++空间命名
3)代码重用性:命名空间可以帮助开发人员更好地组织和管理代码,从而提高代码的重用性,减少重复编写相似功能的代码的工作量。:匿名命名空间是一个不带名称的命名空间,只能在当前文件中访问,用于实现文件作用域内的私有命名空间。:全局命名空间是没有名称的命名空间,所有没有被包含在其他命名空间中的声明都在全局命名空间中。2)提高代码可读性:通过使用命名空间,可以清晰地表明代码的结构和组织,使得代码更易于阅读和理解。:可以在一个命名空间中定义另一个命名空间,形成嵌套的命名空间。来为命名空间起别名,方便使用。原创 2024-04-09 10:33:41 · 182 阅读 · 0 评论 -
C++ 封装(一)
封装是面向对象编程中的一种重要概念,它指的是将数据和操作数据的方法封装在一个类中,并对外部隐藏对象的内部实现细节,只提供公共的接口供外部访问。在C++中你需要创建一个类,将数据成员和成员函数封装在类的内部。可以使用访问控制权限修饰符(public、private、protected)来控制成员的访问权限,一般情况下,数据成员应该定义为私有(private),并提供公共的成员函数(公有成员函数)来访问和修改这些数据成员。这样就实现了数据封装,外部只能通过公共接口来操作数据,而不需要了解内部实现细节。原创 2024-04-13 13:57:06 · 490 阅读 · 0 评论 -
C++ 引用
在C++中,引用是一个别名,它为一个已经存在的变量提供了一个别名。引用在定义时必须初始化,并且一旦初始化之后就不能再指向其他变量。引用可以被视为变量的另一个名字,通过引用可以直接操作原始变量。原创 2024-04-18 15:05:45 · 537 阅读 · 0 评论 -
c++基础语法(三)
C++中指针和数组的用法和C语言是一样的。原创 2024-04-12 23:19:46 · 191 阅读 · 1 评论 -
C++ 继承(一)
继承是面向对象编程中的一个重要概念,它指的是一个类(子类)可以从另一个类(父类)继承属性和方法。子类继承父类的属性和方法后,可以直接使用这些属性和方法,同时也可以在子类中添加新的属性和方法,或者对父类的方法进行重写。继承的作用主要包括:1、代码复用:通过继承,子类可以重用父类的代码,避免重复编写相同的代码,提高了代码的复用性和可维护性。2、扩展功能:子类可以在继承父类的基础上,添加新的属性和方法,实现对父类功能的扩展。原创 2024-04-16 17:15:00 · 355 阅读 · 0 评论 -
c++基础语法(二)
同一个作用域内,允许定义多个函数名相同但参数列表不同的函数。原创 2024-04-09 15:47:11 · 296 阅读 · 0 评论 -
C++ 容器(二)——容器操作
1、动态数组Vector没有提供头部增删(push_front()、pop_front())功能(和数组一样,删除除尾部索引的需要修改后面元素的索引值,很繁琐),链表list有。代码示例:通过上述函数,实现动态数组vector的增删改查。原创 2024-05-09 13:07:10 · 523 阅读 · 0 评论 -
C++ 静态成员函数(二)
静态成员函数不属于任何特定的对象,而是属于整个类,可以通过类名直接调用,无需创建类的实例。静态成员函数不能访问类的非静态成员变量和非静态成员函数,只能访问静态成员变量和静态成员函数。原创 2024-04-19 07:00:00 · 212 阅读 · 0 评论 -
运算符重载(一)
在C++中,运算符重载是指通过定义新的运算符功能或重新定义已有运算符的功能。通过运算符重载,可以使得特定的运算符能够在不同的数据类型或对象上进行不同的操作,从而提高代码的灵活性和可读性。(简单理解为,可以直接对类的对象进行运算符操作,不需要具体到变量成员函数。原创 2024-04-30 13:43:11 · 128 阅读 · 0 评论 -
运算符重载(三)
函数调用运算符(())是一种可以让对象像函数一样被调用的特殊运算符。在C++中,我们可以通过重载函数调用运算符来实现对象的函数调用行为。(当编译器在编译中,检测到对象后面有个()便判断是函数,根据()内的形参,调用不同的函数)。原创 2024-05-01 10:10:13 · 180 阅读 · 0 评论 -
单例设计模式
饿汉式的单例模式,可以确保在程序运行期间只会创建一个实例,但是它的缺点是在程序启动时就会创建实例,无论是否需要,可能会造成资源浪费。原创 2024-04-20 21:30:38 · 350 阅读 · 0 评论 -
运算符重载(二)
作用:可以输出自定义数据类型(像基本类型一样)原创 2024-04-30 23:26:58 · 192 阅读 · 0 评论 -
C++ 内存分区管理
全局变量在程序整个执行过程中都存在,静态变量在程序生命周期内存在,但只能在定义它的函数或文件内访问。原创 2024-04-20 21:10:45 · 678 阅读 · 1 评论 -
C++ 类模板
类模板是C++中一种特殊的模板,用于创建通用的类。通过类模板,我们可以定义一个通用的类,这个类可以接受不同类型的数据作为其成员或参数。在使用类模板时,我们需要指定具体的数据类型,编译器会根据指定的数据类型生成对应的类。作用:建立一个通用类,类中的成员的数据类型是不指定的(不具体),用一个或者多个虚拟的类型来表达。原创 2024-05-06 12:06:13 · 583 阅读 · 0 评论 -
C++ 类对象初始化
当创建一个类的实例时,如果没有定义构造函数,系统会自动生成一个无参构造函数,并自动初始化成员变量。内置类型的变量(如int、double、指针等)会被初始化为一个未定义的值,而自定义类型的变量(如类、结构体)会调用默认构造函数进行初始化。原创 2024-05-01 22:37:38 · 565 阅读 · 0 评论 -
C++ 静态成员(一)
静态成员变量是属于类的成员变量,而不是属于类的实例的。静态成员变量的特点如下:所有类的实例共享同一个静态成员变量,只有一份内存空间。原创 2024-04-18 15:52:01 · 416 阅读 · 0 评论 -
C++ 多态(一)
同一种操作作用于不同的对象时,可以产生不同的行为。在面向对象编程中,多态性是指通过继承和重写实现的,同一个方法在不同的子类中可以表现出不同的行为。多态性可以提高代码的灵活性和可扩展性,使得程序更易于维护和升级。原创 2024-05-02 23:33:46 · 463 阅读 · 1 评论 -
C++ 多态(二)
纯虚析构函数的实现通常在类的定义外部提供,以确保派生类在实现自己的析构函数时能够调用基类的析构函数。原创 2024-05-03 11:53:43 · 648 阅读 · 0 评论 -
C++ 字符串补充(一)
const char类型是C语言中用来表示字符串的一种数据类型,通常以字符数组的形式表示,以空字符'\0'结尾。而string类型是C++中的标准库中提供的字符串类,是一个封装了char数组的字符串对象,可以动态地改变大小,并提供了许多字符串操作的方法。在使用上,const char类型需要手动管理内存,而string类型则由类自动管理内存,更加方便和安全。原创 2024-05-06 00:15:33 · 349 阅读 · 0 评论 -
运算符重载经典案例
1、自定义一个字符串类MyString,用来存放不定长的字符串,重载运算符“==”、“+”,用于两个字符串的内容比较,初值自拟。测试比较两个字符串内容是否相同。2、定义一个复数类Complex,默认初始化为0,重载运算符“+”,“-”,使之能用于复数的加,减运算,运算符重载函数作为Complex类的成员函数。原创 2024-05-02 16:35:53 · 254 阅读 · 0 评论 -
C++ 函数模板
函数模板是一种通用的函数定义,可以在不同数据类型下进行重复使用,从而提高代码的复用性和灵活性。原创 2024-05-05 18:00:51 · 406 阅读 · 0 评论 -
C++ 容器(一)——迭代器
存储和管理数据集合的数据结构 容器管理着为其元素分配的存储空间,并提供成员函数来直接访问或通过迭代器(具有类似于指针的属性的对象)访问它们。原创 2024-05-09 00:36:56 · 496 阅读 · 0 评论 -
C++ 字符串补充(二)
在C++中,可以使用std::getline(std::cin,变量名)函数来实现包含空格的字符串输入。单引号直接按文本要求输出即可,双引号需要在前面加“\”。原创 2024-05-06 15:16:08 · 137 阅读 · 0 评论