C++
文章平均质量分 66
C++基础知识
看山不是山a
在路上
展开
-
C++内存管理
注意,返回的指针的类型是。(Memory Allocation的缩写)用于在堆上动态分配一块指定大小的内存空间。是C语言中用于动态内存分配和释放的函数。虽然C++提供了更先进的内存管理方式,如。参数表示要分配的字节数,函数返回一个指向分。运算符,但是仍然可以在C++中使用。,因此需要进行强制类型转换。参数是要释放的内存块的指针。原创 2024-01-11 17:10:42 · 389 阅读 · 0 评论 -
右值引用,左值引用
表示,c++11后出现的,如表达式,整形1,2...只能出现在operator= 的右侧,用&&左值引用就为常见的引用,本文主要讲右值引用。可以出现在operator= 的左侧。这个方法将左值参数无条件的转换为右值。原创 2024-01-10 22:39:05 · 350 阅读 · 0 评论 -
C++11新特性(也称c++2.0)
注:visual studio要手动打开c++11,在“解决方案资源管理器”右键自己的项目, 如“侯捷C++”(是总项目,不是项目中的某一头文件或源文件),按一下操作。【右击项目】–【选择属性】–【C/C++】–【语言】–【C++语言标准】,选择想要的标准即可。老版的话会输出199711,支持c++11的话会输出201103。visual studio2019以上才支持C++11(好像是)原创 2024-01-08 16:12:49 · 458 阅读 · 0 评论 -
适配器Adapters
stack,queue他们两的底层结构都为deque,deque有好多功能,而stack,queue并不全需要这些功能,而且有些用法也会改变,如图中倒数第二行,deque中用的是push_back(),而stack,queue用的是push(),因此就需要对应的适配器对deque进行改造来实现stack,queue。别的适配器现在看不懂,以后再看。主要是对底层的东西进行改造。原创 2024-01-08 13:19:43 · 339 阅读 · 0 评论 -
STL- 常用算法(拷贝和替换,算术生成,集合算法)
copyreplacereplace_ifswap。原创 2022-07-25 15:15:58 · 194 阅读 · 0 评论 -
STL- 常用算法(遍历,查找,排序)
算法主要是由头文件。原创 2022-07-25 07:21:08 · 402 阅读 · 0 评论 -
STL- 函数对象(仿函数)(eg:int operator()(int v1,int v2)), 谓词,内建函数对象
函数对象(仿函数)是一个,不是一个函数。原创 2022-07-24 15:31:50 · 205 阅读 · 0 评论 -
哈希表(Hash table)
hashtable元素编号除以篮子个数的余数就是要放在第几个篮子中,很可能出现编号不同的元素的余数相同,放在同一个篮子中。如果发生了碰撞,就让它变成一个链表,放在一起。如果你元素个数比篮子数还多,就危险了,需要打散链表。篮子个数扩充规则,就是原始个数的二倍周围最近的一个质数。可以使用hashtable的迭代器改变元素的value,但不能改变元素的key。c++标准库使用的是unordered_set,unordered_map,multiset,multimap代替右边的。这块学的不是很清楚,后面再看。原创 2024-01-07 17:22:48 · 362 阅读 · 0 评论 -
map/ multimap容器(键值对)
map和multimap。原创 2022-07-24 01:53:42 · 1227 阅读 · 0 评论 -
set/multiset 容器,红黑树(rb_tree,red-black tree),pair对组
代码】set容器,multiset容器。原创 2022-07-23 22:58:39 · 165 阅读 · 0 评论 -
stack容器,queue容器
FirstInLastOut,FILO)的数据结构,它只有一个出口栈中只有顶端的元素才可以被外界使用,因此栈中进入数据称为---push栈中弹出数据称为---pop。原创 2022-07-23 14:39:55 · 211 阅读 · 0 评论 -
deque容器(双端数组)
/重新指定容器的长度为num,若容器变长,则以elem值填充新位置。//重新指定容器的长度为num,若容器变长,则以默认值填充新位置。//在pos位置插入一个elem元素的拷贝,返回新数据的位置。//在pos位置插入[beg,end)区间的数据,无返回值。//删除[beg,end)区间的数据,返回下一个数据的位置。//将[beg,end)区间中的数据拷贝赋值给本身。//如果容器变短,则末尾超出容器长度的元素被删除。//删除pos位置的数据,返回下一个数据的位置。//清空容器的所有数据。...原创 2022-07-22 23:39:01 · 92 阅读 · 0 评论 -
vector容器(单端数组)
/重新指定容器的长度为num,若容器变长,则以elem值填充新位置。如果容器变短,则末尾超出容器长度的元素被删除。//重新指定容器的长度为num,若容器变长,则以默认值填充新位置。//容器预留len个元素长度,预留位置不初始化,元素不可访问。//将[beg,end)区间中的数据拷贝赋值给本身。//如果容器变短,则末尾超出容器长度的元素被删除。//容器的容量(大于等于容器中元素的个数)//将n个elem拷贝赋值给本身。//返回容器中元素的个数。//判断容器是否为空。............原创 2022-07-22 22:32:21 · 716 阅读 · 0 评论 -
list容器(链表)
List有一个重要的性质,插入操作和删除操作都不会造成原有list迭代器的失效,这在vector是不成立的。(list)是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的,由于链表的存储方式并不是连续的内存空间,因此链表list中的迭代器只支持前移和后移,属于。//重新指定容器的长度为num,若容器变长,则以elem值填充新位置。//重新指定容器的长度为num,若容器变长,则以默认值填充新位置。比如L1[0],L1.at(0)结点的组成一个是存储数据元素的。...原创 2022-07-23 16:43:59 · 447 阅读 · 0 评论 -
string容器(以及swap(),reverse()函数)
string类内部封装了很多成员方法例如查找find,拷贝copy,删除delete替换replace,插入insertstring管理char*所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责。原创 2022-07-22 15:51:44 · 1955 阅读 · 0 评论 -
分配器allocators
会省略不写,源代码有默认的)事实上,分配器是以 ::operator new 与 ::operator delete完成allocate()和deallocate(),即内存的分配与回收。而 ::operator new()的源码是以malloc分配内存的,即当我们需要size大小的空间时,malloc()分配下图所示空间。分配器:负责空间的配置与管理(写在容器类型的后面,如右图,作用是帮容器分配内存,一般都。分配size大小的空间,如上图,空间前面和末尾都会加额外的东西,内存管理会讲。原创 2024-01-05 16:47:04 · 396 阅读 · 0 评论 -
模板(函数的模板,类模板)( 泛型编程)
C++另一种编程思想称为,主要利用的技术就是和C++有两种编程思想,一种为,另一种为。原创 2022-07-20 13:02:33 · 160 阅读 · 0 评论 -
STL(Standard Template Library,标准模板库),迭代器
/自定义数据类型public}publicintmAge;};//存放对象//创建数据it!=v.end();it++){//两者是等价的}}//放对象指针//创建数据it!=v.end();it++){}}test01();test02();return0;}原创 2022-07-22 13:35:14 · 157 阅读 · 0 评论 -
C++面向对象编程与泛型编程(GP)
C++既支持面向对象编程,又支持泛型编程。原创 2024-01-04 12:30:00 · 366 阅读 · 0 评论 -
多态(纯虚函数和抽象类)
多态分为两类多态满足条件多态使用条件eg利用父类引用子类对象实现多态eg利用父类指针指向子类对象实现多态。原创 2022-07-18 11:04:27 · 231 阅读 · 0 评论 -
c++继承
继承的好处可以减少重复的代码classA继承方式B;A类称为子类或派生类,B类称为父类或基类一类是从基类继承过来的,一类是自己增加的成员。从基类继承过过来的表现其共性,而新增的成员体现了其个性。...原创 2022-07-17 14:57:54 · 238 阅读 · 0 评论 -
运算符重载(加号,左移,递增,赋值,关系,函数调用)
实现两个自定义数据类型相加的运算。作用可以输出自定义数据类型。原创 2022-07-16 21:08:16 · 182 阅读 · 0 评论 -
友元(全局函数做友元,类做友元,成员函数做友元)(成员函数可以在类外说明)
在程序里,有些私有属性也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术。eg全局函数做友元。原创 2022-07-16 15:17:46 · 320 阅读 · 0 评论 -
静态成员static(静态成员变量,静态成员函数), 成员变量和成员函数分开存储
静态成员就是在成员变量和成员函数前加上关键字static,称为静态成员。静态成员也是有访问权限的,如private私有权限类外不能访问。静态成员有两种访问方式。原创 2022-07-15 23:09:07 · 654 阅读 · 0 评论 -
深拷贝与浅拷贝(发生在拷贝构造函数中)
如果属性有在堆区开辟的,一定要自己提供拷贝构造函数,防止浅拷贝带来的问题(系统默认的拷贝构造函数为浅拷贝)原创 2022-07-15 21:10:15 · 66 阅读 · 0 评论 -
构造函数和析构函数(对象特性),初始化列表,一个类的对象作为其他类的成员
解决上述问题,这两个函数将会被编译器自动调用,完成对象初始化和清理工作。同样的使用完一个对象或变量,没有及时清理,也会造成一定的安全问题。对象的初始化和清理工作是编译器强制要我们做的事情,因此如果。一个对象或者变量没有初始状态,对其使用后果是未知。编译器提供的构造函数和析构函数是空实现。我们不提供构造和析构,编译器会提供。也是两个非常重要的安全问题。........................原创 2022-07-15 14:43:52 · 447 阅读 · 0 评论 -
封装(class 类)( 成员=属性(变量)+行为(函数) ),访问权限(公共,保护,私有),跨文件定义类
1.将属性和行为作为一个整体,表现生活中的事物2.将属性和行为加以权限控制类中的属性和行为,我们统一称为也可称为成员属性成员变量也可称为成员函数成员方法。原创 2022-07-14 23:53:47 · 582 阅读 · 0 评论 -
函数(局部静态对象,参数传递,默认参数,占位参数,函数重载),函数返回值,main函数外界输入参数
1.所谓值传递,就是指函数调用时,将实参传递给形参2.形参发生变化时,不影响实参原创 2022-04-11 00:05:49 · 707 阅读 · 0 评论 -
c++引用
作用给变量起别名。原创 2022-07-17 16:14:36 · 57 阅读 · 0 评论 -
指针定义,常量指针与指针常量,this指针,空指针访问成员函数, const修饰成员函数
this指针是隐含每一个非静态成员函数内的一种指针。this指针指向被调用的成员函数所属的对象。this指针不需要定义,直接使用即可。原创 2022-07-16 12:39:55 · 334 阅读 · 0 评论 -
结构体(用户自定义的数据类型)
定义结构体时,关键字struct不可省略创建结构体变量时,关键字struct可以省略。原创 2022-07-15 11:57:06 · 363 阅读 · 0 评论 -
内存四区(代码区,全局区,栈区,堆区),new运算符
C++程序在执行时,将内存大方向划分为程序运行前分为代码区,全局区程序运行后分为栈区,堆区。原创 2022-07-16 23:24:45 · 199 阅读 · 0 评论 -
作用域,基本数据类型(常量const),转义字符,单引号与双引号,运算符
由于小于运算符“原创 2023-11-06 22:47:54 · 156 阅读 · 0 评论 -
c++读写文件,读取键盘的输入
ifs.open("文件路径",打开方式);(可以利用is_open函数可以判断文件是否打开成功)参数解释字符指针buffer指向内存中一段存储空间。len是读写的字节数。参数解释字符指针buffer指向内存中一段存储空间。len是读写的字节数。二进制方式写文件主要利用流对象调用成员函数write。二进制方式读文件主要利用流对象调用成员函数read。ofs.open("文件路径",打开方式);ofs...原创 2022-07-18 13:00:05 · 8387 阅读 · 0 评论 -
C++11常见的代码操作
【代码】C++11常见的代码操作。原创 2024-01-08 20:39:16 · 404 阅读 · 0 评论 -
c++的一些输出cout,printf,fprintf,snprintf
C++中推荐cout输出, printf,fprintf,snprintf是c的标准库函数,c++继承了他。原创 2024-01-02 15:06:12 · 382 阅读 · 0 评论 -
C++从创建项目到exe执行程序,跨文件调用,源文件与头文件
1.函数,变量等在头文件中声明,在源文件中定义。2.定义函数的源文件应该把有函数声明的头文件包含进来3.别的源文件如果需要用到此函数,我们要引入头文件编写代码。原创 2022-07-14 12:22:23 · 3092 阅读 · 0 评论