![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 74
小biu!!!
这个作者很懒,什么都没留下…
展开
-
关联性容器
关联性容器可以实现快速查找(O(logn))的容器线性容器中array、vector、list、deque都可以使用进行顺序查找(O(n)),必须支持operator==比较底层实现 红黑树。原创 2023-09-04 20:06:20 · 189 阅读 · 0 评论 -
deque容器
deque的元素不是全部相邻存储的:采用单独分配的固定大小数组的序列存储数据,以及额外的登记表(中控数组),该表中记录了所有序列的地址,这表示通过下标访问元素时必须经过两次指针解引用,vector只需要一次。①与vector相比,头部插入、删除时,不需要搬运后序元素,效率特别高(O(1));底层采用vector实现,当数据入队时,会对数据调整成堆结构,默认是大顶堆,元素越大,优先级越高,优先出队。①vector扩容,先申请一块更大的新内存,把原内存数据拷贝,释放原内存。底层由deque实现的。原创 2023-09-04 20:04:01 · 71 阅读 · 0 评论 -
STL模板工具
采用顺序结构存储数据,可以使用下标进行随机访问,有时候也叫做数组容器(C++11中增加了array容器,定长数组,相比普通数组它是类类型,增加成员函数,提高安全性),可以自动扩容,容器中的元素存储在连续内存,支持随机访问O(1),尾插入、尾插入效率O(1),但是在指定位置进行插入、删除效率O(n),因为要保证数据的连续性。=,<=,>=,<,>,对容器整体比较,会对两个容器中的元素按顺序一次比较,一旦某个元素比较出结果就立即返回。原创 2023-09-04 19:45:32 · 528 阅读 · 0 评论 -
智能指针与异常处理
当一个常规指针离开了作用域时,只有该指针变量本身占用的内存空间(4/8)会被释放,而它指向的内存空间不会自动释放,当free/delete/delete[]语句忘记执行或者无法执行,形成内存泄露(如何定位内存泄露、如何预防内存泄露)智能指针是一个封装了常规指针的类类型对象,并且重载了*和->运算符,使用起来与常规指针相近当智能指针离开作用域时,它的析构函数必定执行,从而在析构函数中执行释放常规指针的操作,这样就做到了自动释放的效果,从而避免内存泄露智能指针是一个类模板auto_ptr、shared_ptr、原创 2023-09-04 18:47:23 · 109 阅读 · 0 评论 -
C++模板
是一种自动生成代码的技术,这种技术能让程序员在编写代码时不需要考虑数据类型,因此也称为泛型编程技术未知类型名可以任意取名字,一般约定Tclass 类名T1 成员变量;return ret;原创 2023-09-02 11:13:41 · 26 阅读 · 0 评论 -
C++文件读写
由于ostream/istream分别是ofstream/ifstream的父类,因此如果重载了>> <<运算符,既可以用于平时输出、输入类对象,并且还可以直接用于类对象的文本方式流操作读写。C++为文件IO流提供了两套设置位置指针的成员函数,为了兼容一些有两个位置指针的操作系统,但是UNIX、Linux、Windows系统底层只有一个文件位置指针,所以使用哪套都没区别。fstream类 默认以读写方式O_RDWR打开文件,文件不存在则失败,文件存在不清空 “r+”流对象名 执行了该类的!原创 2023-09-02 10:27:09 · 39 阅读 · 0 评论 -
虚函数与多态
指的是一条指令可以有多种形态,当调用一个指令时,它能够根据参数、环境的不同作出不同的操作,这种情况称为多态C++中根据确定指令具体操作的时间划分多态:编译时多态、运行时多态当使用多态时且子类的析构函数中有需要释放的资源,此时父类中就必须设置为虚析构。原创 2023-09-02 09:37:18 · 22 阅读 · 0 评论 -
C++继承
1、当遇到问题时先查看现有的类是否能解决一部分问题,如果有则继承该类,并在此基础上扩展以此解决问题,从而缩短解决问题的时间(代码复用)2、当遇到一个大而复杂的问题时,可以把大问题拆分成若干个不同的小问题,然后为每个小问题设计一个类来解决,最后通过继承的方式把这些类汇总到一个类中,从而解决大问题,以此降低问题的难度,可以同时让多个程序员共同解决大问题派生类继承基类 子类继承父类。原创 2023-08-28 18:33:22 · 23 阅读 · 0 评论 -
基于C++实现NetWork
【代码】基于C++实现NetWork。原创 2023-08-25 20:20:14 · 224 阅读 · 0 评论 -
静态成员和运算符
被static修饰的成员变量和成员函数就叫静态成员只能实例化一个类对象。原创 2023-08-25 20:19:37 · 49 阅读 · 0 评论 -
对象和成员函数
的,但是可以。原创 2023-08-25 20:17:57 · 106 阅读 · 0 评论 -
面向对象和类
类是由程序员设计一种数据类型,里面包含有成员变量、成员函数而对象就是类的实例化,可以理解为使用类类型创建的变量,创建的过程叫做实例化。原创 2023-08-25 20:16:30 · 21 阅读 · 0 评论 -
C++的强制类型转换
因为他认为只有在程序设计不合理的情况下才需要强制类型转换,之所以设计复杂就是不想让程序员使用,而是去反思、重新设计自己的代码。目标类型和原数据类型之间必须有一个方向能够自动类型转换,否则出错。目标类型和原数据类型之间必须存在继承关系,并且目标类型必须是。为什么C++之父设计强制类型转换设计得很复杂、使用很麻烦?,且除了const属性不同,其他都要相同,否则出现报错。因为C语言的强制类型转换,虽然自由度高,但是非常危险。只能把整数转成指针,或者把指针转成整数,否则会出错。,数据原来的类型不会改变。原创 2023-08-25 20:14:19 · 94 阅读 · 0 评论 -
C++引用
引用就是一种取别名的机制为什么要使用指针:①跨函数进行共享变量(输出型参数),引用可替代②提高传参效率,引用可替代,效率比指针还高,不拷贝字节③配合堆内存使用,只能使用指针④配合字符串使用,string类可以替代。原创 2023-08-25 20:13:40 · 23 阅读 · 0 评论 -
默认形参与内联函数
在C++中可以给函数的参数设置默认值,当函数被调用时如果调用者提供了实参则使用实参调用,如果没有提供则使用默认值调用内联函数也会被翻译成二进制指令,但调用语句不会生成跳转指令,而是直接把内联函数的二进制指令进行替换,这样就没有跳转和返回,而是直接执行二进制指令,这种称为内联函数。原创 2023-08-25 20:12:36 · 35 阅读 · 0 评论 -
C++函数重载
在同一作用域下,函数名相同,参数列表不同的函数构成重载关系函数重载与返回值类型、参数名无关与作用域是否相同,以及参数列表的数量、参数类型、常属性不同等有关。原创 2023-08-25 20:11:47 · 26 阅读 · 0 评论 -
C++介绍
是C++中一种对命名空间进行逻辑划分的一种技术变量;函数;结构、联合、枚举;类;...定义了名字空间后形成了一个相对封闭的作用域空间a.ha.cpp注意:可以分开定义,但是必须加上 名字空间名::变量名。原创 2023-08-25 20:10:52 · 18 阅读 · 0 评论