C++
文章平均质量分 82
C++内容学习
...404 Not Found
想和宇宙对话
展开
-
演讲比赛流程管理系统(看看你的星座会赢吗)
为了便于理解,使用分别存储两轮的选手, 存储赢得比赛的编号 这里还需创建一个演讲者类 存储姓名和两轮的比赛成绩 用map容器的对组存储编号和Speaker类的属性,用于存储选手信息 第二个map则是用于存储获奖者信息,读文件,展示文件的载体 表示轮数 表明文件状态 是调用展示记录函数时的判断依据 提示用户进行输入 要设置时间戳,在抽签和生成成绩时需要用到 实例化管理对象,先进行初始化,选手设置,载入记录。 调用菜单,根据用户输入调用不同功能函数,选择错误进行清屏即可 调用初始化,其实没必要,main函数里又原创 2022-07-08 06:00:00 · 357 阅读 · 10 评论 -
C++STL常用算法合集(下)
copy:把指定范围内容器的数据拷贝到另一容器上 replace:更改容器内指定范围的元素 replace_if:更改容器内指定范围且满足条件的元素 swap:交换两容器内的元素 提供一块区间数据的迭代器,和一块存储空间的起点迭代器,将数据拷贝其中,注意实现开辟足够空间 匹配相同数据进行替换 条件匹配,使用仿函数,满足条件的将被替换为目的数据 这是算法库的swap交换函数,通常可以直接调用完成交换 结果展示: accumulate:计算容器元素累计总和 fill:向容器中添加元素 注意包含头文件,作用是求和原创 2022-07-07 06:00:00 · 142 阅读 · 4 评论 -
C++STL常用算法合集(上)
使用普通函数和仿函数作为操作函数,for_each遍历容器 定义仿函数提供transform的操作函数,将v的值+100转移到vTarget上,一定要事先开辟空间 find:查找元素 find_if:按条件查找元素 adjacent_find:查找相邻重复元素 binary_search二分查找法 count:统计元素个数 count_if:按条件统计元素个数 通过源码可以看到查找时会有值的比较,对于自定义数据类型需要重载==,否则无法比较 使用与find一样,只不过是查找方法变成了仿函数设置条件,或原创 2022-07-06 06:00:00 · 244 阅读 · 6 评论 -
函数对象的介绍及使用
概念特点 这里自定义的Add类创建的对象add即为函数对象 可以有返回值、参数,使用与函数无二,实现了两数相加 这里的类有自己的成员变量count,可以计算打印次数,这是普通函数所不具有的,函数对象可以有自己的状态 这里创建了一个函数,把函数对象作为参数实现参数传递打印。概念 find_if算法库函数,查找满足条件的值,在类中设置的为大于5的值,i解引用的值为6,返回的是第一次找到的值的对应迭代器 利用重载运算符()实现降序排序概念 STL内建的函数对象 分类用法 和函数一致,需要引用头文件plus:加法仿原创 2022-07-05 06:00:00 · 492 阅读 · 5 评论 -
map容器使用及员工分组实例
map也采用insert()添加值,对对组要指明两个参数的类型,first代表键值key,second则是存的value值 size返回数据个数,使用swap交换 map插入数据有四种方式建议使用第二种,比较简单方便,第四种虽然简单,但在实际应用中容易误改数据值或是被当作数组难以分清 删除数据使用erae函数,可传迭代器删除,也可传值删除,clear清除函数就是erase从头到尾。 对m[5]未赋值打印可以看出,map默认value值为0, 且打印也是按键值顺序打印的 使用find函数查找,参数是valu原创 2022-07-04 13:57:16 · 264 阅读 · 4 评论 -
set容器的使用——C++
自行设置一个打印函数。set容器用insert插入数据,无需指定位置,按照自身顺序插入数据。拷贝构造和=号赋值可以使用。 这些容器基本都是这么几个函数,知道怎么用就行 这里的erase有传值删除的重载版本 find的返回值类型是迭代器类型 set容器不允许有重复数据,因此count计数的结果要么是0,要么是一 二者最主要的区别在于是否能插入重复元素 multiset的使用无需引入新的头文件,上述案例中,pair是对组。下面会讲 模板中第一个类型是迭代器,第二个是bool类型,ret接收后,ret.secon原创 2022-07-03 22:31:18 · 588 阅读 · 4 评论 -
list容器模拟实现及使用——C++
使用模板,包含一个前指针,一个后指针,和一个数据域 这是一个双向迭代器,即可正向访问,也可反向访问,因为重载了++和– 私有成员为一个头指针,简化模板迭代器命名,CreatHead在构造函数中多次用到,简化为一个函数,避免重复代码 以下函数均在类外实现 五、assign()函数 赋值函数 迭代器的赋值函数还可以有const的版本,这里就不在多写,过于麻烦,这样,insert函数也要写const版本,很多函数都要在写个const版本,这就是个只读限定,防止数据被修改 用assign赋值,返回本身 调用std的原创 2022-07-02 12:42:10 · 637 阅读 · 9 评论 -
stack与queue容器的简单实现——C++
目录一、stack容器一、实现二、使用二、queue容器一、实现二、使用在学习C语言的时候,就已经写过了这些基本的数据结构,栈与队列主要在于进出关系,栈先进后出,队列先进先出。我不再重复赘述,还不了解的可以参考线性表综合讲述容器在此基础上,实现模板化,可以设置任意数据类型,并封装,使用比较方便实现栈与队列,可以依靠已有的vector容器(相当于顺序表),list容器(相当于链表)来存储数据,这些数据结构基本都能互相实现,用vector写栈,再用栈写vector,可以无限嵌套。 基本接口pop出栈,pus原创 2022-07-01 07:55:45 · 161 阅读 · 6 评论 -
deque容器使用及评委打分系统
目录deque容器基本概念 一、构造函数二、赋值操作三、大小操作四、插入和删除五、数据存取六、排序操作评委打分系统 功能:双端数组,头尾都能进行插入删除操作与vector的区别:1.vector对于头部的插入删除效率低,数据越多,效率越低2.deque对头部删除插入的速度快,效率高3.vector访问内部元素时的速度比deque快注:图片来自STL源码剖析 这是一个双端队列,deque的内部实现很复杂,依靠中控器管理多个缓冲区依靠相当复杂的迭代器实现,我还没这个能力去实现打印函数 auto可自动推导类型原创 2022-06-30 13:36:31 · 183 阅读 · 1 评论 -
vector容器模拟实现及使用——C++
目录一、vector基本概念二、构造函数三、assign()赋值函数四、empty()函数五、capacity()函数及size()函数六、resize()函数七、push_back()尾插函数八、pop_back()尾删函数九、insert()插入函数十、erase()删除函数十一、clear()清空函数十二、at()元素访问函数十三、front(),back()获取头尾元素十四、swap()交换函数十五、reserve()预开辟空间函数十六、begin(),end()迭代器十七、运算符重载十八、析构函数原创 2022-06-29 18:16:37 · 453 阅读 · 5 评论 -
string容器模拟实现及使用——C++
目录一、命名空间、常量、类私有成员设置二、构造函数三、assign()赋值函数四、append()追加函数五、find()查找函数六、compare()比较函数七、insert()插入函数八、erase()删除函数九、substr()查找子串函数十、swap()交换函数十一、迭代器十二、reverse(),resize()扩容函数十三、size(),capacity()获取数量,空间大小函数十四、c_str()转化为char数组字符串函数十五、clear()清除函数十六、push_back()尾插函数十七、原创 2022-06-28 05:00:00 · 412 阅读 · 4 评论 -
初识STL
目录一、STL基本概念二、使用举例三、对自定义数据类型的操作 STL全称 Standard Template Library,标准模板库,从广义上分为容器(container)、算法(algorithm)、迭代器(iterator)。容器和算法之间通过迭代器进行连接。STL几乎所有的代码都采用了模板类或模板函数。STL六大组件:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器1、容器:各种数据结构,如vector、list、deque、set、map等,用来存放数据2、算法:各种常用算法,如sort原创 2022-06-25 09:11:41 · 104 阅读 · 0 评论 -
C++提高编程——模板
模板属于C++的泛型编程,它通过建立通用模板,大大提高了代码复用性先声明模板的虚拟类型 后面紧跟着函数声明或定义,其参数类型用T替换如交换函数 可以看到,通过模板,交换函数能实现对不同数据类型的交换,使用时,可以直接传参赋值,编译器会自动推导类型,但两个数的类型必须相同,也可以指明数据类型。 模板参数类型声明可用typename,也可以用class,多个不同类型,可以声明多个虚拟参数来实现自动类型推导。 模板必须要确定数据类型才能使用 fun即使不传参,也要指明数据类型才能使用 其原创 2022-06-25 06:53:37 · 427 阅读 · 3 评论 -
C++类和对象
目录一、封装一、将属性和行为设计在一起二、访问权限二、类中对象的处理一、构造函数与析构函数二、深拷贝与浅拷贝三、类作对象及静态成员四、类中数据的存储五、this指针六、const与mutable三、友元 四、运算符重载五、 继承六、多态 c++类和对象具有三大特型:封装、继承、多态 这即时类的设计,比如人这个类,具有姓名、性别、年龄、身高、体重......多个属性。这些属性可作为类中对象,描述类的属性。同时一些行为,比如赋值、修改等也作为类的成员函数,形成一个具有属性与行为的一个整体—类c++ class原创 2022-06-22 09:58:12 · 97 阅读 · 0 评论 -
C++基础内容学习
代码区和全局区均为未生成exe可执行程序前就存在的1.存放cpu执行的机器指令2.代码区共享,无论生成多少个exe文件,都使用同一个代码3.代码区只读,防止程序生成时被修改。1.存放全局变量和静态变量2.全局区包含常量区,各种常量存放在此,注意是全局的3.该区域数据将在程序结束后由系统自动释放编译器自动分配,系统自动释放、即为平时所设变量由程序员分配释放,否则由操作系统回收。c++使用new再堆区开辟内存,delete释放下面这段代码展示了内存分布上的不同 int&b=a,b为a的引用,相当于给a起原创 2022-06-20 18:49:09 · 161 阅读 · 0 评论 -
C++职工管理系统
目录 一、头文件信息框架构建一、程序目的二、对类的构建二、程序执行流程的设计三、各函数模块的实现一、职工类的类中函数实现一、构造函数二、展示函数 三、取得职位名的函数二、管理类的类中函数实现一、构造函数二、取得文件职工数量的函数三、初始化函数四、菜单函数 五、职工添加函数六、ID检查函数七、保存函数八、职工删除函数 九、下标查找函数与姓名查找函数十、职工修改函数十一、查找职工十二、职工排序十三、职工信息清除十四、析构函数四、总结实现对职工信息的增删改查,以及文件写入读取的交互,基于B黑马程序员所授职工管理系原创 2022-06-12 09:47:24 · 236 阅读 · 1 评论