自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(207)
  • 资源 (2)
  • 问答 (2)
  • 收藏
  • 关注

原创 Qt C++自定义窗体,实现自定义标题栏、阴影、全局背景、拖拽、缩放、最大化等功能,附下载链接

功能:自定义标题栏、阴影、透明、边框、全局背景、拖拽、缩放、最大化、最小化、还原、关闭、记住窗体状态。网上已经有很多类似的教程,但都有一些不足。本篇文章几乎完全实现了和window默认窗体的所有功能(缺少最小化的动画和分屏)。我是业余的,水平不高,这是我能想到最完美的解决方案了。

2021-12-27 22:23:46 4185 3

原创 20.6 常用集合算法

20.6 常用集合算法算法简介:set_intersection//求两个容器的交集set_union//求两个容器的并集set_difference//求两个容器的差集1、set_intersection功能描述:求两个容器的交集函数原型:Iset_intersection(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest);//求两个集合的交集//注意:两个集合必须是有序序列

2020-08-20 14:57:53 340

原创 20.5 常用算术生成算法

20.5 常用算术生成算法注意:算术生成算法属于小型算法,使用时包含的头文件为#include <numeric>算法简介:accumulate//计算容器元素累计总和fill//向容器中添加元素1、accumulate功能描述:计算区间内容器元素累计总和了函数原型:accumulate(iterator beg, iterator end, value);//计算容器元素累计总和//beg开始迭代器//end结束迭代器//value起始值#incl

2020-08-20 14:49:00 318

原创 20.4 常用拷贝和替换算法

20.4 常用拷贝和替换算法算法简介:copy //容器内指定范围的元素拷贝到另一容器中replace //将容器内指定范围的旧元素修改为新元素replace_if //容器内指定范围满足条件的元素替换为新元素swap //互换两个容器的元素1、copy功能描述:容器内指定范围的元素拷贝到另一容器中函数原型:copy(iterator beg, iterator end, iterator dest);//按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置//b

2020-08-15 22:51:38 206

原创 20.3 常用排序算法

20.3 常用排序算法算法简介:sort //对容器内元素进行排序random_shuffle //洗牌指定范围内的元素随机调整次序merge //容器元素合并,并存储到另一容器中reverse //反转指定范围的元素1、sort功能描述:对容器内元素进行排序函数原型:sort(iterator beg, iterator end, _Pred);//按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置//beg 开始迭代器//end 结束迭代器//_Pred

2020-08-15 10:39:17 148

原创 20.2 常用查找算法

20.2 常用查找算法算法简介:find     //查找元素find_if    //按条件查找元素adjacent_find //查找相邻重复元素binary_search //二分查找法count     //统计元素个数count_if   //按条件统计元素个数find功能描述:查找指定元素,返回指定元素的迭代器,找不到返回结束迭代器end()函数原型:`find(iterator beg, iterator end, value);//按值查找元素,找到返回指

2020-08-11 16:07:16 103

原创 20.1 常用遍历算法

20.1 常用遍历算法for_each //遍历容器transform //搬运元素到另一个容器for_each功能描述:实现遍历容器函数原型:for_each(iterator beg, iterator end, _func); //遍历算法遍历容器元素beg 开始迭代器end 结束迭代器_func 函数或者函数对象#include <iostream>#include <algorithm>#include <vector>u

2020-08-11 15:45:56 225

原创 20 STL常用算法

20 STL常用算法STL中内置了许多算法,我们之前接触过sort、transform等算法。概述:算法主要是由头文件<algorithm><functional><numeric>组成。<algorithm>是所有STL头文件中最大的一个,范围涉及到比较、交换、查找、遍历操作、复制、修改等等<numeric>体积很小,只包括几个在序列上面进行简单数学运算的模板函数<functional>定义了一些模板类,用以声明函数对象

2020-08-09 23:50:20 95

原创 19.3.3 逻辑仿函数

19.3.3 逻辑仿函数功能描述:实现逻辑运算函数原型:template<c1ass T> bool logical_and<T>//逻辑与template<class T> bool logical_or<T>//逻辑或template<class T> bool logical_not<T>//逻辑非下面的示例使用了transform算法。#include <iostream>#include &lt

2020-08-09 23:38:02 136

原创 19.3.2 关系仿函数

19.3.2 关系仿函数功能描述:实现关系对比仿函数原型:template<class T> bool equal_to<T>//等于template<class T> bool not_equal_to<T>//不等于template<class T> bool greater<T>//大于template<class T> bool greater_equal<T>//大于等于template

2020-08-09 23:31:38 170

原创 19.3.1 算术仿函数

19.3.1 算术仿函数STL内建了一些函数对象,主要分为:算术仿函数关系仿函数逻辑仿函数用法:这些仿函数所产生的对象,用法和一般函数完全相同使用内建函数对象,需要引入头文件#include<functional>本节我们来学算术仿函数。功能描述:实现四则运算其中negate是一元运算,其他都是二元运算仿函数原型:template<class T> T plus<T>    //加法仿函数template<class T>

2020-08-09 15:39:20 363

原创 19.2.2 二元谓词

19.2.2 二元谓词二元谓词在之前已经接触过,在sort排序中。#include <iostream>#include <vector>#include <algorithm>using namespace std;class MyCompare{public: bool operator()(int v1,int v2) { return v1 > v2; }};void test1(){

2020-08-08 18:25:35 299

原创 19.2.1 一元谓词

19.2谓词概念:返回boo类型的仿函数称为谓词如果operator()接受一个参数,那么叫做一元谓词如果operator()接受两个参数,那么叫做二元谓词谓词一般作为其他函数的参数来使用,如find_if函数。我们转到find_if底层实现: // FUNCTION TEMPLATE find_iftemplate<class _InIt, class _Pr> _NODISCARD inline _InIt find_if(_InIt _First, const _

2020-08-08 18:22:04 948

原创 19.1 函数对象

19.1 函数对象概念:重载函数调用操作符的类,其对象常称为函数对象函数对象使用重载的()时,行为类似函数调用,也叫仿函数本质:函数对象(仿函数)是一个类,不是一个函数特点:函数对象在使用时,可以像普通函数那样调用,可以有参数,可以有返回值函数对象超出普通函数的概念,函数对象可以有自己的状态函数对象可以作为参数传递1、函数对象在使用时,可以像普通函数那样调用,可以有参数,可以有返回值class MyAdd{public: int operator()(int v1,

2020-08-08 18:01:13 114

原创 18.10 案例-员工分组

18.10 案例-员工分组案例描述:公司招聘了10个员工(ABCDEFGHIJ),10名员工进入公司之后,需要指派员工在哪个部门工作员工信息有:姓名、工资组成;部门分为:策划、美术、研发随机给10名员工分配部门和工资通过multimap进行信息的插入key(部门编号)value(员工)分部门显示员工信息实现步骤:创建10名员工,放到vector中遍历vector容器,取出每个员工,进行随机分组分组后,将员工部门编号作为key,具体员工作为value,放入到multimap容器中分

2020-08-08 17:47:45 380

原创 18.9.6 map排序

18.9.6 map排序map容器默认按key值从小到大排序,可以利用仿函数改变排序规则。这些知识跟前面的容器非常相似,不再解释。#include <iostream>#include <map>using namespace std;class MyCompare{public: bool operator()(int v1, int v2) { return v1 > v2; }};void test1(){ map<int, i

2020-08-08 17:27:06 93

原创 18.9.5 map查找和统计

18.9.5 map查找和统计函数原型:find(key); //查找key值存不存在。若存在,返回该元素的迭代器;若不存在,返回map.end()count(key); //统计key值有几个,map中只有0或1;multimap可以有多个#include <iostream>#include <map>using namespace std;void test1(){ //查找 map<int, int>m; m.insert(pair&l

2020-08-08 17:19:47 103

原创 18.9.4 map插入和删除

18.9.4 map插入和删除函数原型:insert(elem); //在容器中插入元素clear(); //清除容器中所有元素erase(begin, end); //删除[begin, end)中所有元素erase(pos); //清除pos位置的元素erase(key); //清除key对应的元素#include <iostream>#include <map>using namespace std;template<class T1, clas

2020-08-08 10:51:19 136

原创 18.9.3 map大小和交换

18.9.3 map大小和交换函数原型:size(); //返回容器元素个数empty(); //返回容器容量swap(mp); //交换两个容器大小操作:#include <iostream>#include <map>using namespace std;//大小void test1(){ map<int, int>m; //按照key排序 m.insert(pair<int, int>(3, 30)); m.inse

2020-08-08 10:43:55 152

原创 18.9.2 map构造和赋值

18.9.2 map构造和赋值构造:map<T1, T2> mp; //默认构造函数map(const map &mp); //拷贝构造函数赋值:map& operator=(const map &mp); //等号运算符重载#include <iostream>#include <map>using namespace std;template<class T1,class T2>void printMa

2020-08-08 10:30:41 197

原创 18.9.1 map基本概念

18.9.1 map基本概念简介:map中所有元素都是pairpair中第一个元素为key(键值),起到索引作用;第二个元素为value(实值)所有元素都会根据元素的键值自动排序本质:map/multimap属于关联式容器,底层结构是用二叉树实现。优点:可以根据key值快速找到value值map/multimap区别:map不允许容器中有重复key值的元素multimap允许容器中有重复key值的元素...

2020-08-08 10:23:42 100

原创 18.8.8 set容器排序

18.8.8 set容器排序学习目标:set容器默认从小到大,掌握如何改变排序规则主要技术点:利用仿函数,可以改变排序规则注意:set容器默认为从小到大,如果要指定排序规则,要在插入数据之前指定规则。示例1:内置数据类型下面的代码中,创建了一个MyCompare类,重载函数调用运算符,并且在创建set容器时用类名作为第二个参数。#include <iostream>#include <set>using namespace std;class M

2020-08-04 22:49:20 234

原创 18.8.7 pair对组创建

18.8.7 pair对组创建对于成对出现的数据,利用队组可以返回两个数据创建方式:pair<type, type> p(val1, val2);pair<type, type> p = make_pair(val1, val2);访问方式:pair.first访问第一个成员pair.second访问第二个成员#include <iostream>#include <string>using namespace std;void

2020-08-03 11:56:22 81

原创 18.8.6 set和multiset的区别

18.8.6 set和multiset的区别set不可以插入重复的数据,而multiset可以set插入数据时会返回结果,表示是否插入成功multiset不会检测数据,因而可以插入重复数据我们想要接收插入时返回的结果,就要先知道返回值的类型。翻阅insert的帮助文档:single element pair<iterator, bool> insert( const value_type& Val ); 单个元素成员函数 (1) 和 (2) 将返回 pair,如

2020-08-03 11:49:47 187

原创 18.8.5 set查找和统计

18.8.5 set查找和统计函数原型:find(key);  //查找容器中是否存在key。若存在,返回该元素的迭代器;若不存在,返回set.end()count(key); //统计容器中key的元素个数对于set而言,count成员函数的结果要么是0,要么是1。因为set不允许有重复的元素。示例:#include <iostream>#include <set>using namespace std;void test1(){ set<int

2020-08-03 11:29:08 118

原创 18.8.4 set插入和删除

18.8.4 set插入和删除函数原型:insert(ele);    //将元素ele插入到容器中clear();      //清空容器中所有元素erase(pos);     //删除位于pos的元素erase(begin, end); //删除[begin, end)区间的元素erase(ele);     //删除值为ele的元素#include <iostream>#include <set>using namespace std;templat

2020-08-03 11:21:14 113

原创 18.8.3 set大小和交换

18.8.3 set大小和交换函数原型:size();  //返回容器中元素的个数empty();  //判断容器是否为空swap(st); //将本身与st交换1、大小操作#include <iostream>#include <set>#include <sstream>using namespace std;template<class T>void printSet(const set<T>& s){

2020-08-03 11:14:49 115

原创 18.8.2 set构造和赋值

18.8.2 set构造和赋值构造函数:set<T> st;      //默认构造函数set(const set &st); //拷贝构造函数赋值:set& operator=(const set &st); //等号运算符重载示例:#include <iostream>#include <set>using namespace std;template<class T>void printSet(co

2020-08-03 11:08:47 114

原创 18.8.1 set/multiset基本概念

18.8.1 set/multiset基本概念简介:所有元素都会在插入时自动排序。本质:set/multiset属于关联式容器,底层结构用二叉树实现set/multiset区别:set不允许容器中有重复的元素multiset允许容器中有重复的元素...

2020-08-03 11:03:15 81

原创 18.7.8 list排序案例

18.7.8 list排序案例案例描述:将Person自定义数据类型进行排序,Person属性有姓名,年龄,身高。排序规则:按照年龄进行升序,如果年龄相同,按照身高降序。1、包含头文件#include <iostream>#include <list>#include <sstream>using namespace std;2、创建Person类类中包含有参构造函数,属性,获取打印信息的成员函数class Person{public:

2020-08-02 17:32:44 134

原创 18.7.7 list反转和排序

18.7.7 list反转和排序反转:元素顺序反过来,如1,4,2变成2,4,1。reverse();排序:升序或降序。//所有不支持随机访问迭代器的容器不支持sort排序//所有不支持随机访问迭代器的容器,内部会提供一些算法sort();1、反转#include <iostream>#include <list>using namespace std;template<class T>void printList(const list

2020-08-01 15:31:17 844

原创 18.7.6 list数据存取

18.7.6 list数据存取函数原型:front();  //返回第一个元素back();   //返回最后一个元素#include <iostream>#include <list>using namespace std;template<class T>void printList(const list<T>& L){ for (list<T>::const_iterator it = L.begin();

2020-08-01 15:02:54 196

原创 18.7.5 list插入和删除

18.7.5 list插入和删除功能描述:对list容器进行数据的插入和删除。图片来自 https://www.bilibili.com/video/BV1et411b73Z?p=219示例#include <iostream>#include <list>using namespace std;template<class T>void printList(const list<T>& L){ for (list<T

2020-08-01 14:54:26 156

原创 18.7.4 list大小操作

18.7.4 list大小操作函数原型:size();      //判断容器是否为空empty();     //返回容器元素个数resize(num);     //重新指定容器长度为num。           //若容器变长,则以默认值填充新位置;           //若容器变短,则删除超出容器长度的元素。resize(num, ele);   //重新指定容器长度为num。           //若容器变长,则以默认值填充新位置;           //若容器变短,则删

2020-08-01 14:50:56 196

原创 18.7.3 list赋值和交换

18.7.3 list赋值和交换功能描述:给list赋值,以及交换list容器。函数原型:asign(begin, end);   //将[begin, end)区间的数据拷贝赋值给本身asign(n, ele);     //将n个ele拷贝赋值给本身list& operator=(const list &lst);   //等号运算符重载swap(lst);       //将lst与本身容器互换下面的示例演示了这几个成员函数的用法#include <iostr

2020-08-01 14:43:58 111

原创 18.7.2 list构造函数

18.7.2 list构造函数函数原型:list<T> lst;       //默认构造函数list(const list &lst);  //拷贝构造函数list(begin, end);     //将[begin, end)区间元素拷贝给本身list(n, ele);       //将n个ele元素拷贝给本身示例:#include <iostream>#include <list>using namespace std;temp

2020-08-01 12:39:18 293

原创 18.7.1 list基本概念

18.7.1 list基本概念功能:将数据进行链式存储链表是一种物理存储单元上非连续的链式存储,数据元素的逻辑顺序是通过链表中的指针链接实现的。链表的组成:链表由一系列节点组成节点的组成:一个时存储数据元素的数据域,另一个时存储下一节点地址的指针域STL中的链表是一个双向循环链表:由于链表的存储方式并不是连续的内存空间,因此链表中的迭代器只支持前移和后移,属于双向迭代器。list优点:采用动态存储分配,不会造成内存浪费和溢出链表执行插入和删除的操作十分方便,修改指针即可,不需要移动

2020-08-01 12:14:46 153

原创 18.6.2 queue常用接口

18.6.2 queue常用接口queue容器成员函数比较简单,放在一起介绍。构造函数:queue<T> que;       //默认构造函数queue(const queue &que); //拷贝构造函数赋值操作:queue& operator=(const queue &que); //等号运算符重载数据存取:push(ele);  //往队尾添加元素pop();    //删除队头第一个元素back();    //返回最后一个元素

2020-08-01 10:55:03 124

原创 18.6.1 queue基本概念

18.6.1 queue基本概念queue是一种先进先出的数据结构,有两个出口。

2020-08-01 10:42:54 123

原创 18.5.2 stack常用接口

18.5.2 stack常用接口构造函数构造函数说明stack<T> stk;默认构造函数stack(const stack &stk);拷贝构造函数赋值操作赋值操作说明stack& operator=(const stack &stk);等号运算符重载数据存取数据存取说明push(ele)向栈顶添加元素pop();从栈顶移除第一个元素top();返回栈顶元素

2020-07-31 22:47:00 137

QT5自定义窗体及标题栏,全局背景,C++语言

qt自定义个性化的窗体和标题栏,并且实现阴影、拖拽、缩放、最大化等功能。

2022-01-10

基于多态的职工管理系统.rar

纯C++编写的职工管理系统(控制台应用),具有增删改查等功能,使用txt文件储存数据。运用多态技术,具有良好的可拓展性。使用vs2019编写,可以直接打开项目文件查看源码。良好的学习资源,上传时设置的是零积分下载,不知道你们看到的是不是免费。

2020-06-23

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除