自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 c++ STL有序关联容器-----------set/multiset

set是关联容器,存储唯一的元素,并且元素自动升序排序multiset:关键字可以重复的set关联容器与map的区别:set只含元素的键(key)类型,而不包含值(value)类型,底层都是红黑树,能在插入元素时自动调整二叉树的排序,确保每个元素被放在合适的位置,同时保持树的高度最小化,从而实现快速检索(操作的时间复杂度为每个元素唯一,如果插入已存在的元素,该操作会自动被忽略(自动去重)按键值默认升序排列。

2025-09-02 10:33:12 544

原创 C++ STL序列容器-------list

1、list是序列容器,允许在序列中的任何位置执行o(1)时间的插入和删除操作,并且可以在两个方向上进行迭代2、list的底层是带头结点的双向循环链表,每个节点通过next,prev指针连接成顺序表3、与其他的序列式容器相比(array、vector、deque),list通常在任意位置的插入、删除元素的执行效率更高(直接插入、删除一个节点,再用指针连接,不存在数据的移动)。但list和forward_list最大的缺陷是不支持随机存取(因为他的迭代器是双向迭代器,而vector的是随机迭代器)

2025-09-01 17:36:37 805

原创 C++ STL 有序关联容器--------map/multimap

std::map是STL的一个关联容器,提供一对一的戴护具处理能力,即每个键值(key)在map中只能出现一次,每个键值可以关联一个值(value),形成键值对的形式。(1)、map 中所有元素都是pairpair 中第一个元素为key(键值),起到索引作用,第二个元素为value(实值)所有元素都会根据元素的键值自动排序(一般是升序)(2)、 本质:map/multimap 属于关联式容器,底层是用二叉树实现的(3)、 优点:可以根据key值快速找到value值。

2025-08-25 20:46:27 997

原创 C++ STL 顺序容器---------deque

/ 空deque// 3个默认值元素0 0 0// 初始化列表//同上// 拷贝构造1 2 3 4 5//移动构造 dq2移动给dq6,dq2为空//迭代器初始化。

2025-08-24 16:50:15 984

原创 C ++ STL 顺序容器-------vector

1. vector是表示可变大小数组的序列容器。2. 像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像静态数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。3. vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小需要增加相应的存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。

2025-08-23 20:03:07 604

原创 C++ enum 和 enum class

enum:无法进行前置声明 原因:枚举的底层类型是隐式确定的,必须通过枚举值才知道枚举的类型,所以声明和定义在一起,C++ 98不能声明时指定类型,C++ 11后可以手动指定底层的类型从而支持前置声明。enum: 不安全,可以隐式转换,可能导致意外结果 (如传参错误,不同类型的枚举比较,算术运算)enum class可以前置声名,类型默认为int ,无需自己指定底层类型。enum class: 提供强类型安全,防止意外的隐式转化。enum class : 提供默认的底层类型,之前前置声明。

2025-07-05 15:22:25 347

原创 C ++四种类型转换

在C语言中,如果左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与接收返回值类型不一致时,就需要发生类型转化,C语言中总共有两种形式的类型转换:隐式类型转换和显式类型转换。

2025-06-01 22:47:00 1118

原创 C++三大特性之-----多态

(1)定义多态性是面向对象编程的一个重要特性之一,它允许我们使用统一的接口来处理不同类型的对象。多态性使得程序更加灵活、可扩展并且易于维护。不同的对象调用相同的函数时,会产生出不同的状态。(2)类型编译时多态(静态多态):传不同类型的参数。

2025-05-26 21:23:57 1101

原创 C++ 面向对象三大特性 之-----封装和继承

把属性(数据)和 方法(函数)捆绑在一起,并隐藏对象内部实现细节的机制。通过封装,可以保护数据不被外部随意访问和修改,从而提高代码的安全性和可维护性。C++通过类派生的机制支持继承,被继承的类称为基类 或 超类 新产生的类称为派生类 或 子类class 派生类名 :访问限定符 基类名private:成员列表;public:成员列表;protected:成员列表;

2025-05-20 21:49:33 908

原创 基于Linux系统的shell脚本

shell 是一种脚本语言 也是应用程序脚本:本质是一个文件,文件里面存放的是 特定格式的指令,系统可以使用脚本解析器 翻译或解析 指令 并执行(它不需要编译)常见的命令解释器**** 此处区分 解释型代码 命令型代码解释型:运行代码需要解释器,运行效率低,开发效率高 如: .sh结尾的shell脚本 .py结尾的 python脚本命令型:需要编译链接,直接计算机运行,运行效率高,开发效率低 如: .c .cpp。

2025-05-13 23:48:48 1035

原创 C++ lambda 表达式

概述:Lambda表达式是 c++11 引入的一个语法糖,来源于的概念(本质可以理解为函数)。它可以用来定义并创建匿名的函数对象,主要用于方便编程,避免全局变量的定义,并且变量安全。Lambda表达式的语法类似于一个函数定义,但它不需要函数名,可以直接定义并使用。Lambda表达式相比于普通函数和普通类,有以下几个优点:简洁、灵活和安全。Lambda表达式本质上是一个匿名类的对象,因此它可以赋值给一个函数指针或函数引用,也可以作为模板参数传递给一个泛型函数或类。

2025-05-07 20:30:02 1314

原创 C++ 静态static

声名时加上static关键字,定义时不用加static5. 无this指针,可以对其值进行修改6.不可通过构造函数初始化静态成员7. 若是私有,只能在类的成员函数中访问若是公有,类内类外皆可访问,类外访问加上。

2025-04-10 10:00:52 709

原创 c++ 移动构造函数,移动赋值函数

move函数本质是可将一个左值转化为右值,或将一个右值转化为左值与强转函数类似但是,move函数无法消除const,即move无法对一个常性左值,或常性右值 ,进行类型转换给出示例:构建一个Int类,此处仅展示main函数部分。

2025-03-13 15:43:19 613

原创 c++将亡值、左值、右值

定义:可用&取地址的值。

2025-03-11 00:05:06 255

原创 c++中= 、+ 、前置++、后置++、输出<< 、输入>>运算符重载

C++ 的 +、-、*、/ 等运算符只能用于对基本类型的常量或变量进行运算,不能用于对象之间的运算。利用 C++ 提供的“运算符重载”,赋予运算符新的功能,就能解决用+将两个对象相加这样的问题运算符重载基本格式:返回值类型 operator 运算符(形参表)...

2025-03-06 19:53:14 590

原创 C++拷贝构造函数

同一个类的对象在内存空间中具有完全相同的结构,可进行一个整体进行复制或拷贝,拷贝过程只需拷贝数据成员,成员函数是共用的。那么在调用拷贝构造函数时,会再次调用拷贝构造函数来复制参数,从而导致无限递归调用(程序进入调用拷贝构造函数的死循环)建立对象时,用同一个类的另一个对象来初始化该对象的存储空间,称之为~(3)构建一个对象的亡值(函数返回值是对象)3、为什么拷贝构造函数的参数是常性引用。(2)将一个对象作为实参传递给函数形参。类名(const 类名 & )(1)一个对象初始化另一个对象。

2025-03-06 14:48:41 303

原创 C++构造函数与析构函数

c++构造函数,析构普函数和一些零碎知识

2025-03-05 18:54:49 620

原创 区分C语言中strlen和sizeof

(1)求字符串长度的库函数,需引用头文件#include<string.h>,只针对字符串,不能求其他类型变量的长度。(2)以字节为单位,只管组占用内存空间大小,不关注存放的具体内容,因此sizeof计算包括"\0"(3)只关注内存中是否有"\0",如果没有,会一直持续往后找,注意越界。(1)是一个单目操作符,不是函数,类型是unsigned int。(2)遇到"\0"就结束,求取长度不包括"\0"(3)参数可以是数组,指针,类型,对象,函数等等。1、用sizeof计算常用数据类型的大小。

2024-10-09 20:48:10 308 1

原创 指针(C语言版)

分析:p+1为数组结尾的地址,(int*)(p+1)将该指针强转为指向int*的指针,使指针偏移量发生改变,由12个字节转变为4个字节,则(int*)(p+1)-1的地址为[2]结尾的地址,故*((int*)(p+1)-1)的访问值为3。例如,如果一个指针指向一个整型变量,p+1后指向的地址由原来变量的地址向高地址方向增加了4个字节。我们将内存中字节的编号称为指针,每个编号是唯一的,根据编号可以找到对应的地址,所以提到指针,将其通俗理解为地址。eg:分析*((int*)(p+1)-1)的访问值。

2024-04-13 00:34:16 458 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除