C++(从0基础到入门)
文章平均质量分 69
温柔了岁月.c
这个作者很懒,什么都没留下…
展开
-
C++正则表达式
可一使用sregex_token_iterator tpos(str.begin(), str.end(), reg2,-1);其中,匹配的字符串的前缀和后缀,都存在result中的prefix和suffix函数中。最后一个参数为-1时,得到不匹配的结果,最后一个参数为0时,得到匹配的结果。7.[] :一般情况表示字符串的范围,[abc]表示abc任意一个字符。第二步:用regex_match()函数,进行正则对象的匹配。注意 ^通常与[],搭配使用,表示相反的,要使用 regex_search()函数。原创 2023-07-15 20:14:23 · 505 阅读 · 4 评论 -
STL算法篇之拷贝修改类算法
注意:这remove删除,并不是真正意义上的删除**(如果想真正意义上的删除,再用一个尾删就行**),他只是把删除的数据覆盖,但是容器元素的个数是没有改变的。remove_copy 将删除的结果另存,倒是可以做到真正意义上的删除。copy_backward的第三个参数是迭代器的末位置(反向拷贝)4.replace_copy_if 条件替换,结果另存。copy的第三个参数是迭代器的初始位置(正向拷贝),6.remove_copy_if 条件删除结果另存。这两个函数的前两个参数,表示被拷贝迭代器的范围,原创 2023-07-13 15:00:47 · 262 阅读 · 8 评论 -
STL容器之bitset
bitset,通常用来存储的数据是二进制,所以后面涉及一些位运算或者是二进制的时候,使用bitset容器会比较方便。使用的时候,仍然需要包含bitset的头文件。原创 2023-07-10 12:51:22 · 239 阅读 · 4 评论 -
C++STL算法之堆算法
注意:真正意义上的,插入数据和删除数据,还是要根据相应的容器调用其中的函数(比如:push_back,pop_back)堆就是如图,像这样一种连续的数据,但是注意0的位置不存储数据,目的是为了让编号一置。入堆(不是传的数据,只是每一次调用,让你变成堆的形式),起到一个调整数据位置的作用。这个排序默认,也就是简单的从小到大排序,当然第三个参数,你应该也可以写比较准则。出堆的时候,先调用这个函数,将第一个元素,放到最后面,然后用尾删法,删除数据。在插入数据的时候,调用这个函数,将其变为堆的形式。原创 2023-07-04 14:48:45 · 1533 阅读 · 2 评论 -
排列组合算法
跟那个next_permutation是相反的,如果有{3, 2 , 1},那么它的上一序列就是{3, 1, 2}其实也当于数学中的排列组合,用数学公式算A(4 4)的全排列,也是24种情况。如果说 有{1, 2, 3},那么它的下一个序列就是{1, 3, 2}第一个:next_permutation 下一个序列。第二个:prev_permutation 上一个序列。其实也就是相当于数学中的排列组合。原创 2023-07-03 16:54:03 · 174 阅读 · 8 评论 -
STL算法之生成异变算法
fill函数的作用是:将一个区间的元素都赋予val值。函数参数:fill(vec.begin(), vec.end(), val);fill_n函数的作用是 :参数包括 : 一个迭代器,一个计数器以及一个值。该函数从迭代器指向的元素开始,将指定数量的元素设置为给定的值。有三个参数,前两个参数表示迭代器的范围,第三个参数是一个函数(可采用lambda表达式)第一个和第二个参数是迭代器范围,第三个参数为存储的迭代器,第四个参数为函数。6.transform 一元操作。注意:填充容器的时候,容器要有容量。原创 2023-06-22 00:54:16 · 656 阅读 · 11 评论 -
算术类算法
accumulate 加法partial_sum 逐步求和inner_product :求积adjacent_difference 求差。原创 2023-05-29 09:22:12 · 356 阅读 · 2 评论 -
关系类算法函数
equal 比较算法includes 是不是包含lexicographical_compare 比较序列(类似于C++字符串的比较)max 最大值 max_elementmin 最小值 min_elementmismatch(比较两个容器,第一次出现不同的地方)原创 2023-05-28 21:46:04 · 678 阅读 · 2 评论 -
C++STL算法篇之集合算法
4. set_symmetric_difference 对称差集。就是求2个容器的并集,有5个参数,前4个参数分别为2个容器的范围,3.set_intersection 交集。2.set_difference 差集。1.set_union 交集。原创 2023-05-21 16:31:03 · 580 阅读 · 14 评论 -
C++STL算法篇之排序和通用算法
# random_shuffle> 乱序算法> 注意:这里乱序算法一般搭配随机数种子使用,不然的话,每次出现的结果是一样的> ```cpp//10.乱序算法 random_shuffle //随机数种子 srand((unsigned)time(nullptr)); vector mmm2 = { 1, 2 ,3, 4, 5, 6, 7, 8, 9 }; random_shuffle(mmm2.begin(), mmm2.end()); copy(mmm2.begin(), m原创 2023-05-14 22:00:50 · 388 阅读 · 6 评论 -
C++STL算法篇之查找算法
C++STL算法篇之查找算法。原创 2023-05-04 22:07:23 · 776 阅读 · 8 评论 -
C++函数适配器
函数适配,就是让函数指针调用的时候,函数后绑定特定的参数,从而让函数指针存在多种的调用形态。原创 2023-04-23 22:06:20 · 256 阅读 · 4 评论 -
函数包装器和lambda表达式
2. function 对象(函数名)这里举了2个例子,find_if算法和for_each算法。作用:提供一个类型的公共接口,方便使用模板。1.学会使用一个完成版的lambda表达式。仿函数的参数一般用const来修饰。1.头文件 functional。2.用lambda表达式调用函数。当然对象也可以通过赋值的操作。4.lambda捕获方式区别。3.lambda缺省的写法。一般结合算法或者函数使用。原创 2023-04-15 15:25:14 · 538 阅读 · 6 评论 -
迭代器与仿函数
用这种方法好处在于:输入一些不是要求的数据类型,程序不会像cin一样崩溃,而是会结束程序。//输入的与要求的不一样,错误流。distacne(第一个参数,第二个参数)计算迭代器中2个参数的位置。第一个参数和第二个参数,表示值的范围,第三个参数表示赋值对象的位置。仿函数:是让类名模仿函数调用的行为(函数调用:函数(函数参数))容器名:const_reverse_iterator it。istream_iterator object1;ostream_iterator 对象(参数);原创 2023-04-11 22:45:55 · 451 阅读 · 6 评论 -
单例设计模式
模式:套路 -----> 写代码的习惯设计模式:前人总结具有代表性套路的模式官方说法:它是一套被反复使用,多数人知晓,经过分类编目的,代码设计经验的总结。设计模式的究极目标:通过增加的形式去减少因为变化而要修改源码的问题(维护问题)保证整个类的使用只有一个对象例如:1.多线程网络资源初始化2.回收站机制3.任务管理器4.日志管理。原创 2023-04-08 12:17:28 · 365 阅读 · 2 评论 -
STL容器篇之map与tuple
比较的方法,还是跟之前一样,写一个仿函数打印的方法:用重载的方法,或者用接口函数去访问class MM {public :} friend ostream & operator原创 2023-04-05 16:51:37 · 644 阅读 · 2 评论 -
STL容器之initializer_list与set
set处理自定义类型比较的方法,不推荐使用重载,使用仿函数同样后面打印的话,使用新式for循环加接口函数较为方便,使用函数重载的话,重载就较为复杂class MM {public :return age;int age;date . insert(MM(10 , "张三"));date . insert(MM(13 , "李"));;} //此处用函数重载,较为麻烦,可以使用接口函数进行访问;原创 2023-04-04 21:41:41 · 503 阅读 · 3 评论 -
STL容器篇之stack和queue
1.使用容器还是要使用头文件 stack。push() 入栈 ->相当于尾插。例如 :1 + ‘0’ = ‘1’例如: ‘1’ - ‘0’ = 1。pop() 出栈->相当于尾删。stack 对象。主要原理是根据ASCII码。top() 获取头部元素。原创 2023-04-02 12:55:51 · 396 阅读 · 2 评论 -
STL容器篇之list
这里的话,主要通过list容器写了2个功能添加信息和打印信息后面完整的项目,会在C++项目专栏中写到//list操作自定义类型 # include # include # include # include # include using namespace std;return in;int age;原创 2023-03-31 22:35:30 · 424 阅读 · 6 评论 -
STL容器篇之array与vector (练习篇)
题目就将mm的姓名和年龄, 通过array操控自定义类型打印出来知识点:1.构造函数时候,利用初始化列表2.新版的for循环3.写了一个类,来做array的数据类型,用结构体也是一样的array如果进行不赋初值的创建,就必须要用一个无参的构造函数,否则就会报错// array操作自定义类型 # include # include # include using namespace std;原创 2023-03-30 21:27:28 · 187 阅读 · 0 评论 -
STL容器篇之array与vector(学习篇)
array 是STL 中一个容器, 是一个定值数组相当于C语言中 array[5].在C++中, 使用容器都要使用想对应的头文件使用array这个容器,就要使用 这个头文件使用方法: 对象.函数1.size(), 计算大小2.empty(), 判断是否为空3.begin(), 可以指向array数组的第一个元素,注意:也可以表示array数组中的第一个元素4.end(), 指向array数组中的最后一个元素,注意:不表示array数组中的最后一个元素5. front(), 第一个元素。原创 2023-03-29 13:18:49 · 875 阅读 · 0 评论 -
C++模板
模板编程也叫泛型编程,忽略数据类型的一种编程方式。原创 2023-03-27 22:21:18 · 414 阅读 · 8 评论 -
C++IO流(2)
1.构造的方式,带参数构造函数,const char * UR,ios :: openmode mode。注意:组合的方式是用位或,例如:可读可写 ios::in | ios:: out。ios:: ate 打开已有文件,指针在文件末位。ios::in 读的方式,打开文件。ios :: out 写的方式,打开文件。ios :: app 追加的方式,写文件。//获取string。原创 2023-03-24 22:37:23 · 242 阅读 · 8 评论 -
C++IO流(1)
流就是若干字节组成字节序列,流操作就是从一个移动到另一个的过程。cerr 标准错误输出 输出到控制台,不可以重定向。clog 标准错误输出 输出到控制台,可重定向。重定向:可以改变函数,使得函数变成另外一个 功能。cin 标准输入 从键盘读取,可以重定向。cout 标准输出 输出到控制台,可以重定向。2.有两种方法:通过对象形式,通过成员函数的形式。当然也可以用做成员函数的方法去用。write():输出一个字符串。字符和字符串的输入和输出。put():输出一个字符。原创 2023-03-22 23:09:39 · 304 阅读 · 6 评论 -
C++虚函数与多态
override :强制重写,起说明作用,表示子类当前是方法是重写父类(就是说明父类中一定存在一个同名的虚函数),用于子类实现父类的同名虚函数。多态的概念其实并不重要,重要的是,你需要知道,那个对象指针在特定情况调用那个成员。2.必须父类存在virtual类型的成员函数,并且子类中存在该函数的同名函数。抽象类,一般用于架构项目,构建好整个项目模块,具体的细致工作,交给子类去实现。只调用了父类的析构函数,没有调用子类的析构函数,存在内存的泄露。虚函数表:指向虚函数的指针(监视的窗口看)原创 2023-03-21 23:08:03 · 680 阅读 · 6 评论 -
菱形继承和C++相关问题
1.如果不加以修饰,那么调用的,取决于指针的类型,如果是父类的指针类型,那么肯定就调用父类的。如结果所示,存在二义性问题,这a应该都是一个值,采用virtual继承的方式来解决。像这样都是a的话出现二义性,要采用virtual继承,所以菱形继承它也叫虚继承。注意的是:可以用父类的指针,对子类对象进行初始化,但不能用子类的指针对父类初始化。c++中大部分情况,都需要初始化列表,所以建议,最好每次都是用初始化参数列表。如图所示,打印的结果都是10,这样就不存在二义性问题了。如果不加以修饰,那么按照就近原则,原创 2023-03-18 17:53:04 · 458 阅读 · 0 评论 -
C++单继承和多继承
继承方式为protected , 父类中的public和protected 都变为protected ,private不变。注意:1.继承的属性无论被继承多少次,都存在,A被B继承,B被C继承,C被D继承,D包含ABC中所有的属性。1.构造顺序:如果这个son继承了father这个类,先构造父类的对象,再构造自身的对象。继承:子类没有新的属性,或者行为的产生。3.私有的方式继承,可以阻断父类的属性。1.继承,主要是遗传学中的继承概念。2.继承的写法,继承中的权限问题。只有父类的继承,称之为单继承。原创 2023-03-17 23:14:26 · 858 阅读 · 4 评论 -
C++运算符重载
C++运算符重载什么是运算符重载重载的写法运算符重载的注意事项为什么要使用运算符重载友元函数运算符重载类成员函数运算符重载特殊运算符重载=运算符重载++ ,--运算符重载流运算符重载()运算符重载什么是运算符重载运算符重载就是运算符重新赋予运算能够操作自定义类型注意:运算符重载的前提条件是必定存在一个自定义类型运算符重载的实质就是函数的调用两种方式1.友元重载2.类重载重载的写法运算符重载也是一个函数,只是函数名的写法不同,其余的跟函数的写法类似函数的写法:函数返回值类型 函数名原创 2023-03-15 00:16:50 · 185 阅读 · 1 评论 -
C++类型转换
static(要转换的目标(可以是常量,也可以是表达式))1.去掉const属性(提供一个可以修改的接口,去操作const属性)进行赋值的时候,原来的数据还是原来的数据,不受赋值数据的影响。这就是C++强制转换类型,最后一种用的较少,了解即可。按照C++的说法,比起C语言的更加安全。但是需要注意的是,它只是提供了一个接口。2.增加const属性(用的比较少)1.它可以把指针转换成整数。2.空指针转化为目标指针。1.基本数据类型的转换。3.指针的效果依然存在。类似C语言的强制转换。原创 2023-03-11 23:42:55 · 352 阅读 · 10 评论 -
C++友元
C++友元是用friend关键字修饰的函数或者类2.友元的作用:用来打破类的封装(忽视权限的限定)3.友元并不是说直接访问数据成员,友元只是提供一个场所,赋予对象具有打破权限限定的能力。4.友元函数和友元类,不属于当前类,实现函数或者类不需要类名来限定。原创 2023-03-10 18:02:25 · 507 阅读 · 6 评论 -
C++特殊成员
如果想要修改,就必须要用mutable,(但一般情况,既然使用了常成员函数,就没有必要去修改它)1.static成员不属于某一单独的对象,是属于类的,通俗的讲,构造函数中,不能用好this指针访问常数据成员。2.static成员,它的访问可以不需要对象。1.跟上面一样,static放在函数的前面。静态成员函数访问非静态成员,要指定对象访问。const修饰的成员函数:常成员函数。常成员函数可以和普通函数同时存在。静态成员函数可以直接访问静态成员。特点:不能够修改里面的数据成员。2.常对象只能调用常成员函数。原创 2023-03-09 12:00:00 · 417 阅读 · 0 评论 -
C++类的组合练习
欢迎来观看温柔了岁月.c的博客目前设有C++学习专栏C语言项目专栏数据结构与算法专栏目前主要更新C++学习专栏,C语言项目专栏不定时更新待C++专栏完毕,会陆续更新C++项目专栏和数据结构与算法专栏一周主要三更,星期三,星期五,星期天。原创 2023-03-07 12:00:00 · 133 阅读 · 0 评论 -
C++类的组合
类的组合就是以另一个对象为数据成员,这种情况称为类的组合1.优先使用类的组合,而不是继承2.组合表达式的含义 一部分关系。原创 2023-03-06 19:01:39 · 1665 阅读 · 7 评论 -
C++构造和析构
欢迎来观看温柔了岁月.c的博客目前设有待C++专栏完毕,会陆续更新C++项目专栏和数据结构与算法专栏。原创 2023-03-04 12:00:00 · 728 阅读 · 0 评论 -
C++类与对象
C++类是对事物的一种抽象,万物都可以当做类来处理,事物的特征:类中的数据成员人(人的年龄和体重…)事物的行为:去购物,去睡觉,去吃饭…对象可以说是类的具体化,比如年龄为18,体重为60kg…原创 2023-03-03 12:00:00 · 417 阅读 · 1 评论 -
C++动态内存申请和练习
C++申请的内存是自由存储区, C语言的堆区内存, 所以C++类对象的内存, 不能用malloc。delete [] 指针名(一维数组,二维数组都是一样的)在结构体中申请空间,结构体的元素有年龄,性别,并完成赋值。用new创建一个空间,拿20个放字符,20个放存整数。这里其实需要注意的是哦,struct 是一个数据类型。进行赋值的时候要用{},括起来, 不然会把报错。delete +指针名。原创 2023-03-01 12:00:00 · 895 阅读 · 6 评论 -
string和自动推断类型
欢迎来观看温柔了岁月.c的博客目前设有C++学习专栏C语言项目专栏数据结构与算法专栏目前主要更新C++学习专栏,C语言项目专栏不定时更新待C++专栏完毕,会陆续更新C++项目专栏和数据结构与算法专栏一周主要三更,星期三,星期五,星期天。原创 2023-02-27 12:00:00 · 540 阅读 · 6 评论 -
bool与引用类型
bool(布尔类型)大小:1个字节返回值有两个:1(true),0(false)int main()return 0;原创 2023-02-26 12:00:00 · 762 阅读 · 6 评论 -
C++函数新思想和标准的输入和输出
C++允许同名不同参的函数存在,C不允许函数缺省就是对函数的形参赋初值,当不传参的时候使用的是默认值。原创 2023-02-24 12:00:00 · 858 阅读 · 8 评论 -
C++最简单的程序和命名空间
namespace 空间名称 {} //用namespcae 声明一个东西作用:可以提高标识符的使用,可以避免命名污染。原创 2023-02-22 12:00:00 · 182 阅读 · 8 评论