自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 收藏
  • 关注

原创 Qt图表视图

Qt图表视图。

2023-04-30 16:01:41 220 1

原创 TableWidget

代码】TableWidget。

2022-07-25 22:44:20 429

原创 QTableWidget控件的使用

QTableWidget控件的使用

2022-06-18 12:54:13 348

原创 Qt菜单栏、工具栏、状态栏、铆接部件、核心部件

Qt菜单栏、工具栏、状态栏、铆接部件、核心部件

2022-06-14 23:24:21 483

原创 进程间的通信--无名管道

无名管道是 UNIX 系统 IPC(进程间通信)的最古老形式,所有 UNIX 系统都支持这种通信方式机制管道的特点:半双工,数据在同一时刻只能在一个方向上流懂 数据只能从管道的一段写入,另一端读出 写入管道中的数据遵循先进先出的规则 管道所传送的数据是无格式的,要求管道的读出方与写入方必须事先约定好数据的格式,如多少字节算一个消息等。 管道不是普通的文件,不属于某个文件系统,其只存在于内存中。 管道在内存中对应一个缓冲区。不同的系统其大小不一定相同。 从管道读数据是一次性操作,数据..

2022-04-24 20:44:34 736

原创 线程死锁的代码示例

#include <cstddef>#include <cstdio>#include<iostream>#include<pthread.h>#include <unistd.h>using namespace std;/* 死锁:两个线程视图同时占用两个资源,并按不同的次序锁定相应的共享资源 解决方法: 按相同的次序锁定相应的共享资源 使用 pthread_.

2022-04-11 23:30:22 828

原创 信号量实现线程的同步

#include <cstdio>#include<pthread.h>#include<iostream>#include <semaphore.h>#include <unistd.h>using namespace std;/* 一个线程负责计算结果,一个线程负责获取结果*/struct Result{ int res; //定义信号量 sem_t sem;};//计算并将结果放置Re.

2022-04-11 23:21:43 254

原创 线程信号量

信号量本质上是一个非负整数计数器,是共享资源的数目,通常用来控制对共享资源的访问线程信号量可以实现线程间的同步与互斥通过sem_post()和sem_wait()函数对信号量进行加减操作,从而解决线程的同步和互斥信号量的数据类型: sem_t信号量的创建和销毁#include<semaphore.h>int sem_init(sem_t *sem,int pshare,usigned value);int sem_destroy(sem_t *s...

2022-04-10 21:34:15 614

原创 读者写者问题(一个读者一个写者)

#include <cstddef>#include <cstdio>#include<iostream>#include<pthread.h>#include <unistd.h>using namespace std;struct Storage{ //两个条件变量、两个互斥锁 int value; pthread_cond_t rc; pthread_mutex_t rm; int .

2022-04-08 22:48:42 287

原创 条件变量的简单使用

条件变量的创建和销毁#include<pthread.h>int pthread_cond_init(pthread_cond_t *cond,pthread_condattr_t *cond_attr);int pthread_cond_destroy(pthread_cond_t *cond);返回值:成功返回0,出错返回错误编号参数: cond:条件变量 attr:条件变量属性条件变量的等待操作#include&l...

2022-04-07 23:27:18 160

原创 互斥锁、读写锁、信号量(实现互斥)的简单应用,程序示例

mutex1.h#ifndef __ACOUNT_H__#define __ACOUNT_H__#include <pthread.h>struct Account{ int code; double balance; //账户余额 //定义一把互斥锁,用来对多线程操作的 //银行账户(共享资源)进行加锁保护的 //建议互斥锁用来锁定一个账户(共享资源),和账户绑定在一起 //尽量不设置为全局变量,否则可能出现一把锁去锁定

2022-04-06 20:00:39 640

原创 读写锁互斥问题

读写锁的创建和销毁#include<pthread.h>int pthread_rwlock_init(pthread_rwlock_t *restrict rwlock,const pthread_rwlockattr_t *restrict attr);int pthread_rwlock_destroy(pthread_rwlock_t *rwlock);返回值:成功返回0,否则返回...

2022-04-06 19:32:40 296

原创 互斥锁的类型( 标准互斥锁(默认互斥锁)、递归互斥锁、 检错互斥锁)

互斥锁属性创建和销毁#include<pthread.h>int pthread_mutexattr_init(pthread_mutexattr_t *attr);int pthread_mutex_attr_destroy(pthread_mutexattr_t *attr);返回值:成功返回0,出错返回错误编号参数:互斥锁属性互斥锁共享属性操作#include<pthread.h>int pthread_mutexattr_getpsh..

2022-04-06 15:37:36 527

原创 快速排序基础分析

快速排序的基本思想:首先在数组中选取一个用于比较的基准值,将待排序的记录分为两部分,左侧记录均是小于或等于基准值的,右侧记录均是大于或等于基准值的,然后分别对两部分重复上述操作。基准值:1.选取第一个元素2.选取第一个元素、最后一个元素、中间元素中居中的元素作为基准值,并调到第一个元素 的位置时间复杂度:快速排序的执行时间取决于递归的深度:最坏情况:O(n^2) 元素正序或逆序,所有除...

2022-03-16 00:00:46 135

原创 Linux信号处理

每个信号名都以SIG开头,信号名的定义都在头文件<signal.h>中,通过kill -l 命令可查看信号:信号名一般都是宏,内部通常是一个正整数(信号前面的数字表示),信号(signal)它是一种软件中断,它提供了一种处理异步事件的方法,在Linux中没有32号信号和33号信号,34以前的为普通信号(不可靠信号),34以后的为实时信号(可靠信号),如果信号一旦产生,可能不会立即处理它,等待合适的时间才去处理,信号事件的产生对进程而言是异步的,信号如果无法对它进行处理,...

2022-03-03 17:27:23 1619

原创 function函数对象包装器和bind机制

支持四种函数的包装: 普通函数 匿名函数 类的成员函数 仿函数(重载了()运算符的函数) //函数对象包装器#include<iostream>#include<vector>#include<algorithm>#include<functional>using namespace std;//函数对象包装器,为函数提供了一种容器(封装)int test(int n){ cout <.

2021-12-11 12:37:26 364

原创 匿名函数的捕获列表的【捕获类型】

按值捕获//按值捕获#include<iostream>using namespace std;int main(){ int t = 10; /*[t]() { cout << t << endl; }(); //直接调用形式(有参数直接加参数就行) */ //按值捕获,捕获的是声明匿名函数时,捕获列表参数的值 auto f = [t]() { cout << t << endl; //输出.

2021-12-07 14:25:57 438

原创 匿名函数中mutable的使用

#include<iostream>using namespace std;int main(){ int t = 10; auto f = [t]() mutable //[t] 为捕获t(是值捕获),拷贝额一份t { return ++t; }; auto f2 = [t]() mutable { return ++t; }; //查看内存变化就能发现 //(多次调用同一个匿名函数,内部维持自己的一份变量,不影响外面的,也不影响其他.

2021-12-07 10:46:25 313 1

原创 重载 << 运算符和 > 运算符

重载 << 运算符, > 运算符,<运算符的函数书写

2021-11-30 23:12:17 284

原创 构造string的方法,及substr操作

const char*c="hello world"string s(c,n) //s 是 c 指向的数组中前 n 个字符的拷贝,该数组至少应该包含 n 个字符。 string s(s1,pos1) //s 是 string s1 从下标 pos 开始的字符串的拷贝,如果 pos>s1.size(),则会抛出 out_of_range 的异常,刚好的等于就是拷贝为空 。 string s(s2,pos2,len) //s 是 string s2 从下标 pos2 开始...

2021-11-21 21:12:48 434

原创 resize 改变容器大小

resize 可以用来增大或缩小容器的大小,如果当前容器大小大于所要求的大小(所要求的大小:reszie 的大小),容器后面的元素会被删除,如果当前容器大小小于新的大小,会将新元素添加到容器后面。 vector<int> vec(10, 100); //10个100 vec.resize(15); //后面的5个为0 /*for (int i : vec) { cout << i << " "; }*/ cou...

2021-11-21 16:24:38 1616

原创 重载运算符返回类对象时的函数调用情况

例如在重载的 * 运算符函数中,在返回类对象时,均创建一个临时对象作为返回值:1. return A(n * rhs.n, d * rhs.d);先创建再返回:2. A result(n * rhs.n, d * rhs.d); return result;返回的 *this 也是临时对象的地址:3 return *this; //第一段程序的截取const A operator*(const A& rhs) { ...

2021-11-20 21:52:56 325

原创 有关拷贝构造函数和赋值运算符

拷贝构造函数也是一种构造函数,在用一个已存在的对象去初始刚创建的对象时调用拷贝构造函数。默认的拷贝构造函数(缺省的)是浅拷贝,完全地把对象A拷贝给对象B,如果当数据成员中有指针了型的数据成员时,采用(执行)默认的的拷贝构造函数时,会发生内存泄漏。指针类型的数据成员会执行同一块内存空间,当程序结束时,调用两次析构函数,此时的内存会被释放两次(本身只有一块内存,两个指针都指向这块内存空间)(下面代码没有涉及到深拷贝的情况)#include<iostrea...

2021-11-11 19:46:53 272

原创 五子棋【基于 EasyX 图像库】

首先要安装 EasyX然后就是代码了(基本都有注释)//头文件 five_chess.h//也可以不用这个类了,全部放在 main.cpp 上也行,为了保持习惯,就分一下吧//当然每个函数的实现也可以放在不同的 cpp 文件上class five_chess{public: void initGame(); void playChess(); int judge_winlos(int a,int b);};//main.cpp#include<iostream

2021-10-27 00:26:34 533

原创 lc 492. 构造矩形

//双指针class Solution {public: vector<int> constructRectangle(int area) { vector<int> vec(2); int sub_val = area; int L = area, W = 1; while (W<=L) { if (W * L == area && L - W <= sub_val) //L-W=chaz.

2021-10-23 17:02:08 87

原创 lc.299 求众数2

class Solution {public: vector<int> majorityElement(vector<int>& nums) { int count=nums.size()/3; int length=nums.size(); unordered_map<int,int> mp; for(int i=0;i<length;++i) { .

2021-10-22 18:35:29 375

原创 lc.136 只出现一次的数字

//官方使用异或运算来处理class Solution{public: int singleNumber(vector<int>&nums) { for(int i=1;i<nums.size();++i) { nums[0]^=nums[i]; //异或的性质 } return nums[0]; }};//---------------.

2021-10-21 23:28:59 65

原创 lc453. 最小操作次数使数组元素相等

//只说了所有元素相等,所以只看相对差距,选出 n-1 个增加 1,和剩下那个减少 1没有区别(官方思路)//时间复杂度 O(n),空间复杂度 O(1)class Solution {public: int minMoves(vector<int>& nums) { if(nums.size()==0||nums.size()==1) //0个或1个元素直接返回 { return 0; .

2021-10-20 23:03:34 125

原创 lc 187. 重复的DNA序列

class Solution{ public: vector<string> findRepeatedDnaSequences(string s) { vector<string> vec; if (s.size() <= 10) { return vec; } map<string, int> ma; //没要求有序的,也可以..

2021-10-09 17:36:45 79

原创 lc 面试题 17.14. 最小K个数

class Solution{public: vector<int> smallestK(vector<int>& arr, int k){ vector<int> vect; priority_queue<int,vector<int>, greater<int> > a; //放入优先队列,并升序排序 for (auto n : arr) { a.push(n); } .

2021-10-07 13:45:09 62

原创 lc 20.有效的括号

class Solution{public: bool isValid(string s) { //s 中的第一个字符如果是右括号,可以直接 return 了,因为前面没有字符,不存在匹配 if (s.size() % 2 == 1 || s.size() == 0 || s[0] == '}' || s[0] == ')' || s[0] == ']') { return false; } stack<char>stack1; for (int .

2021-10-05 23:24:51 74

原创 lc 26.删除有序数组中的重复项【双指针】

class Solution {public: int removeDuplicates(vector<int>& nums) { int i = 0,j = 1; for (i,j; j <nums.size(); ++j) //时间复杂度 O(n),空间复杂度 O(1) { if (nums[i] == nums[j]) { continue; } else { nums[++i] = nums[j];.

2021-10-05 15:30:19 113

原创 剑指 09.两个栈实现一个队列

class CQueue {public: stack<int> st1,st2; //st1 做插入队列,st2 做删除队列 CQueue() { while(!st1.empty()) st1.pop(); //初始化,把栈中元素清空 while(!st2.empty()) st2.pop(); } void appendTail(int value) { st1.push(value); ...

2021-10-05 11:44:03 66

原创 io 多路复用之 poll

客户端#include<unistd.h>#include<arpa/inet.h>#include<iostream>#include<string.h>using namespace std;int main(){ //创建socket int fd = socket(AF_INET, SOCK_STREAM, 0); if (fd == -1) { perror("socket error"); exit(-1);

2021-09-27 20:59:03 102

原创 io 多路复用之 select

目录客户端服务器客户端#include<iostream>#include<unistd.h>#include<arpa/inet.h>#include<string.h>using namespace std;int main(){ //创建socket int fd = socket(AF_INET, SOCK_STREAM, 0); if (fd == -1) { perror("socket erro..

2021-09-26 23:38:31 80

原创 Ubuntu 系统,忘记 root 密码了

目录第一步先进入终端了。然后命令:su root 进入 root 模式:3. 我这里错误了,然后就修改了,命令:sudo passwd root4.然后就自己输入新密码了,输入新密码时,你输入的密码不会在终端出现,第一遍后,按回车就输入第二遍就行了。 第一步先进入终端了。 然后命令:su root 进入 root 模式: 3. 我这里错误了,然后就修改了,命令:sudo passwd root4.然后就自己输入新密码了,输入新密码时,你输入..

2021-09-13 23:50:12 419

原创 lc.1894

1894. 找到需要补充粉笔的学生编号难度中等65收藏分享切换为英文接收动态反馈一个班级里有n个学生,编号为0到n - 1。每个学生会依次回答问题,编号为0的学生先回答,然后是编号为1的学生,以此类推,直到编号为n - 1的学生,然后老师会重复这个过程,重新从编号为0的学生开始回答问题。给你一个长度为n且下标从0开始的整数数组chalk和一个整数k。一开始粉笔盒里总共有k支粉笔。当编号为i的学生回答问题时,他会消耗chalk[i]支粉笔。如...

2021-09-11 00:14:40 79

原创 lc.704

给定一个n个元素有序的(升序)整型数组nums 和一个目标值target ,写一个函数搜索nums中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例2:输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2 不存在 nums 中因此返回 -1...

2021-09-06 23:48:34 91

原创 【C++】杨辉三角

杨辉三角简介(来自百度百科):杨辉三角,是二项式系数在三角形中的一种几何排列。在欧洲,这个表叫做帕斯卡三角形。帕斯卡(1623----1662)是在1654年发现这一规律的,比杨辉要迟393年,比贾宪迟600年。杨辉三角是中国古代数学的杰出研究成果之一,它把二项式系数图形化,把组合数内在的一些代数性质直观地从图形中体现出来,是一种离散型的数与形的结合。(百度百科)性质: 每个数等于它上方两数之和。 每行数字左右对称,由1开始逐渐变大。 第n...

2021-08-19 13:18:21 2321

原创 C++ primer 9.3.3 节习题答案

目录9.259.269.25容器(除array外(array 创建时都是固定大小的,不能改变(不能使用下面的方法))有许多的删除元素的方法:如:pop_back() 、pop_front() 、erase() 、clear()相等时:不发生删除操作(之间的范围也是空的)elem2为尾后迭代器时:删除 elem1 到最后一个元素都为尾后迭代器时:不发生删除操作(之间的范围也...

2021-08-18 01:07:42 147

空空如也

空空如也

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

TA关注的人

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