
C++
文章平均质量分 91
无
ydm_ymz
这个作者很懒,什么都没留下…
展开
-
初阶10 模版进阶
一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。【优点】模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生增强了代码的灵活性【缺陷】模板会导致代码膨胀问题,也会导致编译时间变长出现模板编译错误时,错误信息非常凌乱,不易定位错误。原创 2025-03-27 23:51:48 · 855 阅读 · 0 评论 -
初阶9 stack和queue
stackstack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类,这些容器类应该支持以下操作:empty:判空操作back:获取尾部元素操作push_back:尾部插入元素操作。原创 2025-03-27 23:50:55 · 995 阅读 · 0 评论 -
初阶8 list
list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效。与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率更好。与其他序列式容器相比,原创 2025-03-26 22:05:07 · 576 阅读 · 0 评论 -
初阶7 vector
vector就类似数据结构中的顺序表vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。意味着可以采用下标对vector的元素 进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自 动处理本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。原创 2025-03-26 22:03:35 · 764 阅读 · 0 评论 -
初阶6 string
C语言中,字符串是以’\0’结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要用户自己管理,稍不留神可能还会越界访问。但是 size_t 是用无符号来修饰的,也就是说无符号的 -1,它的补码全是1,也就是整形的最大值,所以他的意思就是:从 pos 位置开始,往后取 42 亿多个字符。迭代器的作用是用来访问容器(用来保存元素的数据结构)中的元素,所以使用迭代器,我们就可以访问容器中里面的元素。原创 2025-03-25 18:46:38 · 792 阅读 · 0 评论 -
初阶5 STL简介
是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。原创 2025-03-25 18:42:16 · 603 阅读 · 0 评论 -
初阶4 模板初阶
本章重点如何实现一个通用的交换函数呢?以下面的交换函数为例:可以看到两种不同类型的交换函数的实现,我们用重载函数去实现的使用函数重载虽然可以实现,但是有一下几个不好的地方:泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础概念函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本。格式注意:typename 是用来定义模板参数关键字,也可以使用 class(切记:不能使用 struct 代替 class)这里推荐使用class,原创 2025-03-24 15:49:56 · 640 阅读 · 0 评论 -
初阶3 C/C++内存管理
对于内置类型来说,malloc和new用法几乎一样,但是对于自定义类型来说,new和delete相比于malloc,会调用构造函数和析构函数这里以链表为列,看看malloc和new的区别malloc:单纯开空间//链表int val;//申请节点int main()// 定义n1节点free(n1);return 0;new:开空间+调用构造函数初始化//链表public://构造函数:_next(nullptr), _val(val) // 初始化列表。原创 2025-03-24 15:39:39 · 1352 阅读 · 0 评论 -
初阶2 类与对象
与结构体相似:class + 类名 + {} +;;——分号不可省在类里面定义函数需要注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。class Data//类里的内容由成员函数和成员变量组成public:_day = day;private:在类外定义函数——类域int _age;在类外定义函数,需要在类里面声明一下这个函数,并且要在定义的时候函数名前加上类名+作用域限定符,表明这是该类的函数。且我们常常将声明放在.h。原创 2025-01-27 22:45:26 · 1140 阅读 · 0 评论 -
初阶1 入门
定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。一个命名空间定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中//局部域->全局域->展开(编译时是否去命名空间)了的命名空间域 or 指定访问命名空间域// 命名空间中可以定义变量/函数/类型int val;命名空间可以嵌套定义int a;int b;int c;int d;原创 2025-01-27 22:40:02 · 1117 阅读 · 1 评论 -
C++前言
PC平台几乎所有的游戏都是C++写的,比如:魔兽世界、传奇、CSgo、等,市面上相当多的游戏引擎都是基于C++开发的,比如:Cocos2d、虚幻4、DirectX等。关于全局问题可读《深入探索C++对象模型》、《Imperfect C++》、《C++沉思录》、《STL源码剖析》,要挑战智商,可看关于模版及模版元编程的书籍如《C++ Templates》、《C++设计新思维》、《C++模版元编程》;用java,但内卷化比较严重,大厂可能会有C++后台开发,主要做一些基础组件,中间件、缓存、分布式存储等。原创 2025-01-25 11:15:29 · 906 阅读 · 0 评论