
C++
c++学习记录
Aoiner
想成为pro哥
展开
-
C++EasyX之井字棋
【代码】C++游戏开发之井字棋原创 2023-12-02 17:13:07 · 555 阅读 · 0 评论 -
C++EasyX之跟随鼠标移动的小球
【代码】C++游戏开发之跟随鼠标移动的小球。原创 2023-12-02 14:54:13 · 299 阅读 · 0 评论 -
对继承和对象组合的理解
继承和对象组合的区别原创 2023-11-29 18:01:24 · 528 阅读 · 0 评论 -
设计模式之Strategy策略模式
定义一系列算法,把它们一个个封装起来,并且使它们可互相替换(变化)。该模式使得算法可独立于使用它的客户程序(稳定)而变化(扩展,子类化)。原创 2023-11-29 17:42:41 · 279 阅读 · 0 评论 -
设计模式之Template模式(模板方法)
定义一个操作中的算法的骨架 (稳定),而将一些步骤延迟 (变化)到子类中。Template Method使得子类可以不改变 (复用)一个算法的结构即可重定义(override 重写)该算法的 某些特定步骤。在软件构建过程中,对于某一项任务,它常常有稳定的整体操作结构,但各个子步骤却有很多改变的需求,或者由于固有的原因 (比如框架与应用之间的关系)而无法和任务的整体结构同时实现。) 为很多应用程序框架提供了灵活的扩展点,是代码复用方面的基本实现结构。原创 2023-11-29 13:46:15 · 515 阅读 · 0 评论 -
面向对象设计模式入门知识
面向对象设计原则原创 2023-11-28 21:20:57 · 380 阅读 · 0 评论 -
C++新特性学习
c++11。原创 2023-11-23 00:08:52 · 131 阅读 · 0 评论 -
C++提高编程笔记
/vector容器存放自定义数据类型public:int age;对于仿函数的编写相对麻烦一点,其他的大差不差public:int age;public:player p1("刘备",32);player p2("诸葛亮",31);player p3("关羽",25);player p4("张飞",23);it!= s.end();原创 2023-11-18 17:50:59 · 113 阅读 · 0 评论 -
C++ STL实践案例
公司今天招聘了10个员工(ABCDEFGHIJ),10名员工进入公司之后,需要指派员工在那个部门工作。分组后,将员工部门编号作为key,具体员工作为value,放入到multimap容器中。通过multimap进行信息的插入 key(部门编号) value(员工)员工信息有 : 姓名 工资组成;部门分为:策划、美术、研发。遍历vector容器,取出每个员工,进行随机分组。创建10名员工,放到vector中。随机给10名员工分配部门和工资。原创 2023-11-18 17:23:59 · 110 阅读 · 0 评论 -
C++之map/multimap
pair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值)map/multimap属于关联式容器,底层结构是用二叉树实现。multimap允许容器中有重复key值元素。map中所有元素都是pair(对组)可以根据key值快速找到value值。map不允许容器中有重复key值元素。所有元素都会根据元素的键值自动排序。可以利用仿函数改变其排序方式。原创 2023-11-15 19:54:54 · 135 阅读 · 0 评论 -
C++之set/multiset
对于仿函数的编写相对麻烦一点,其他的大差不差public:int age;public:player p1("刘备",32);player p2("诸葛亮",31);player p3("关羽",25);player p4("张飞",23);it!= s.end();it++) {cout << "名字:" << it->name << " 年纪:" << it->age << endl;原创 2023-11-15 19:07:53 · 92 阅读 · 0 评论 -
C3848 VS2022错误原因
可用性:当您在const对象上调用一个const成员函数时,可以确信这个函数不会引起对象状态的改变,这使得在使用const对象时也能够使用这个函数。清晰性:标记成员函数为const可以使其接口更清晰地表明其行为,其他开发人员在使用和阅读代码时可以更容易地理解函数的作用。安全性:通过声明成员函数为const,可以确保在该函数内部不会对类的数据成员进行修改,从而提高代码的安全性。在学习C++STL中的set时,尝试利用仿函数,改变set的排序规则,代码如下。在仿函数中,重载()的函数后面加const。原创 2023-11-15 18:43:01 · 303 阅读 · 0 评论 -
关于const迭代器访问的思考
这里迭代器可以看作指针,加const后就是常量指针,常量指针(const 指针)只能调用常量成员函数。当你有一个指向常量对象的指针时,即使你的函数不对值进行修改,为了保证对象的状态不被修改,只能通过该指针调用常量成员函数。下面这段代码 写出来感觉没什么问题 但无法对函数进行调用。1.解引用迭代器获得对象引用 在调用。3.在成员函数后面加const。三种解决方法代码(水)原创 2023-11-14 21:29:42 · 131 阅读 · 0 评论 -
关于C++中list链表的迭代器的思考
学习时 对于list中的begin和end两个迭代器产生了疑问,如果是双向循环链表的话,那么指向不就是同一块地址了吗?第一个结点指针域中prev指针指向最后一个结点的数据域 而最后一个结点的next指针指向第一关结点的数据域 如图红线部分。在 list 中,每个元素通常由一个节点对象来表示,节点对象中包含了元素的值以及指向下一个节点和上一个节点的指针。对于标准库中的 list,每个元素(节点)在内存中是分开存储的,因此它们的迭代器是单独的地址。,而不是直接指向元素的值,因此它们是。原创 2023-11-14 21:07:31 · 445 阅读 · 0 评论 -
C++之list(链表)
由于链表的存储方式并不是连续的内存空间,因此链表list中的迭代器只支持前移和后移,属于。原创 2023-11-14 20:39:56 · 396 阅读 · 0 评论 -
C++之queue(队列)
front - 队头 back - 队尾。队列容器允许从一端新增元素,另一端移除元素。可以被外界使用,因此队列不允许有遍历行为。push - 入队 pop - 出队。Queue(队列)是一种。的数据结构,他有两个出口。原创 2023-11-14 16:41:48 · 1192 阅读 · 0 评论 -
C++之stack(栈)
栈中只有顶端的元素才可以被外界使用,因此栈中无遍历的行为。push - 入栈 pop - 出栈。最里面 - 栈底 入口处 - 栈顶。在内存里 栈底高地址 栈顶低地址。stack(栈)是一种。原创 2023-11-14 16:41:05 · 351 阅读 · 0 评论 -
C++随机数的实现
在C++中实现一定范围的随机数的方式。原创 2023-11-13 21:24:32 · 274 阅读 · 0 评论 -
C++之string、vector、deque容器综合案例
有5名选手:选手ABCDE,10个评委分别对每一名选手打分,去除最高分,去除评委中最低分,取平均分。原创 2023-11-13 21:16:10 · 299 阅读 · 0 评论 -
C++之deque容器
多段缓冲区,头尾的缓冲区留有插入的位置,但读取 中间的数据时,需要重新在中控器寻找该段的地址。:deque数组只有大小概念,没有容量,因为可以无限插入,双端数组,改中控器即可。中控器维护的是每个缓冲区的地址,使得使用deque时像连续的内存空间。1.vector对于头部的插入删除效率低,数据量越大,效率越低。2.deque相对而言,对头部的插入删除速度回比vector快。注意:插入和删除提供的位置是迭代器,而不是数字。对于支持随机访问的迭代器,都可以用。,维护每段缓冲区内容,原创 2023-11-13 17:44:52 · 214 阅读 · 0 评论 -
C++之vector容器
并不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝新空间,释放原空间。:不同之处在于数组是静态空间,而vector可以动态扩展。vector数据结构和数组非常相似,也称为。数据量大 可以直接预留出大小 避免重新开辟。返回容器容量 — capacity();重新指定大小 — resize();判断是否为空 — empty();返回元素个数 — size();原创 2023-11-10 19:53:50 · 128 阅读 · 1 评论 -
STL之string
string类内封装了许多成员方法,如查找find,拷贝copy,删除delect,插入insert,替换replace。string是一个类,类内封装了char *,管理这个字符串,是一个char *的容器。find 从左往右查找 rfind 从右往左查找 但显示都是正常下标。string时C++风格的字符串,而string本质上时一个类。string的赋值方式很多,operator=常用。string管理char *所分配的内存,感觉比较好理解,部分就不写举例了。char * 是一个指针。原创 2023-11-07 22:17:28 · 73 阅读 · 0 评论 -
C++笔记
1.创建.h后缀名的头文件2.创建.cpp后缀名的源文件3.在.h里声明函数4.在.cpp里编写函数。原创 2023-10-18 01:36:44 · 96 阅读 · 1 评论 -
C++中递增运算符重载的理解
对c++递增运算符重载的理解原创 2023-05-31 00:01:23 · 109 阅读 · 1 评论 -
c++中使用switch…case遇到的问题
学习完多态写小项目时遇到的问题。原创 2023-10-30 17:21:37 · 371 阅读 · 1 评论 -
基于多态的职工管理系统
【代码】基于多态的职工管理系统。原创 2023-10-31 02:14:26 · 122 阅读 · 1 评论 -
迭代器访问数据(初学)
但当迭代器指向的数据也为指针时,需要对他进行两次解引用或者一次解引用后用**->**的方式指向所要访问的数据。可以将迭代器看作指针,在需要显示其指向的数据时需要对他进行解引用。原创 2023-11-07 16:07:20 · 80 阅读 · 0 评论 -
静态成员函数和非静态成员函数的区别
静态成员函数和非静态成员函数的区别原创 2023-05-27 12:18:05 · 1148 阅读 · 1 评论 -
如何解决没有与参数列表匹配的构造函数
对于没有与参数列表匹配的构造函数报错的解决原创 2023-05-26 21:13:14 · 2999 阅读 · 0 评论 -
C++数组类封装 模板案例
学完模板,实践操作。原创 2023-11-06 23:29:11 · 109 阅读 · 0 评论 -
C++ 对动态分配的内存的释放
delete和delete[]是用于释放动态分配的内存的运算符。deletenew在这种情况下,delete会调用指向的对象的析构函数,并释放分配的内存。delete[]new[]在这种情况下,delete[]会,并释放整个数组所占用的内存空间。当使用new[]运算符创建动态数组时,编译器会在分配的内存块中存储数组的长度信息。这个长度信息通常是通过一个隐藏的标头来记录的,以便delete[]操作符能够知道需要释放的内存的确切长度。因此,当你使用delete[]原创 2023-10-29 18:50:01 · 259 阅读 · 1 评论 -
点和圆的关系判断 C++代码实现(面向对象)
【代码】点和圆的关系判断 C++代码实现(面向对象)原创 2023-05-16 22:38:52 · 304 阅读 · 1 评论 -
C++模板笔记
2.可以通过空模板参数列表来强制调用函数模板 (指定类型推导的方式,但不指定)typename —— 表面其后面的符号是一种数据类型,可以用class代替。模板的通用性不是万能的,如数组的赋值和类内数据大小比较等…1.指定传入的类型 2.参数模板化 3.整个类模板化。1.自动类型推导,需要推导出一致的类型T才可以使用。1.如果函数模板和普通模板都可以实现,优先普通模板。2.模板必须确定出T的数据类型,才可以使用。2.类模板中的成员函数在调用时才可以创建。T —— 通用的数据类型,名称可以换。原创 2023-11-06 01:12:31 · 81 阅读 · 0 评论