C/C++
文章平均质量分 51
QtC++ 开发从业者
天道酬勤
展开
-
理解内存模型和内存序 看这篇就够了!
memory_order_acquire&memory_order_acquire组合以及memory_order_release&memory_order_consume组合的对重排的影响:转载 2023-02-23 16:28:42 · 483 阅读 · 0 评论 -
动态规划DP 二维数组类型2
由于我们的目的是从左上角到右下角,最小路径和是多少,那我们就定义 dp[i] [j]的含义为:当机器人从左上角走到(i, j) 这个位置时,最下的路径和是 dp[i] [j]。那么,dp[m-1] [n-1] 就是我们要的答案了。注意,这个网格相当于一个二维数组,数组是从下标为 0 开始算起的,所以 由下角的位置是 (m-1, n - 1),所以 dp[m-1] [n-1] 就是我们要走的答案。原创 2023-02-07 10:44:23 · 473 阅读 · 0 评论 -
VIX恐慌指数的计算代码C++版本
波动率指数(Volatility Index,VIX),又称恐慌指数,鉴于其有效反映美股市场恐慌和避险情绪而成为出色的市场情绪跟踪指标和风险对冲工具。早前和部分群友也有讨论过该指数,彼时临时找了芝加哥期权交易所(CBOE)公布的VIX指数的编制方案原版,仓促概览之后就指数编制的方法进行交流,但毕竟没实际计算过,对其中细节描述不甚理解,最后也未能形成较有建设性的交流结果。原创 2023-02-03 17:10:54 · 1092 阅读 · 1 评论 -
一 、Qml开发之环境搭建
到这里软件运行的基础环境就搭建好了,从下一课开始正式讲解具体的空间展示和基础点击事件的绑定。点击 继续 按钮 选择Kit ,Kit 主要是软件编译器工具集;点击 继续 -〉完成 按钮。原创 2023-01-18 14:32:43 · 1400 阅读 · 0 评论 -
错误 C4430 缺少类型说明符 - 假定为 int, 注意: C++ 不支持默认 int,解决方法
问题主要是头文件引用问题,首先看看使用的变量类型是否正确引用头文件。原创 2021-06-10 16:13:23 · 975 阅读 · 0 评论 -
堆排序
堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。算法描述将初始待排序关键字序列(R1,R2….Rn)构建成大顶堆,此堆为初始的无序区;将堆顶元素R[1]与最后一个元素R[n]交换,此时得到新的无序区(R1,R2,……Rn-1)和新的有序区(Rn),且满足R[1,2…n-1]<=R[n];由于交换后新的堆顶R[1]可能违反堆的性质,因此需要对当前无序区(R1,R2,.转载 2020-06-04 16:24:55 · 238 阅读 · 0 评论 -
快速排序算法讲解c++
//// main.cpp// quick-sort//// Created by mac on 2020/6/4.// Copyright © 2020 mac. All rights reserved.////快速排序的总体的算法就是利用二分法,最终把数组进行排序在一组数组里面进行选择一个数字然后通过这个数字对数据进行分割,比这个数大的放到左边,比这个数小的放到右边//然后通过递归的方式进行不断递归知道数组数据排序完成#include <iostrea...原创 2020-06-04 11:28:14 · 194 阅读 · 0 评论 -
Boost库安装与使用
简介Boost库是一个可移植、提供源码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一。Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。在C++社区中影响甚大,其成员近2000人。Boost库为我们带来了最新、最酷、最实用的技术,是不折不扣的“准”标准库。Boost库中较著名库:1)Regex,正则表达式库;2)Spirit,LLpars...原创 2020-05-27 17:08:45 · 1054 阅读 · 0 评论 -
QT源码下载地址
经常需要,记录一下:http://download.qt.io/archive/qt/源码地址原创 2018-06-25 10:21:03 · 5834 阅读 · 0 评论 -
小和尚上山学习之智能指针(六)--boost::weak_ptr
boost::weak_ptr 属于 boost 库,定义在 namespace boost 中,包含头文件 #include<boost/smart_ptr.hpp> 便可以使用。在讲 boost::weak_ptr 之前,让我们先回顾一下前面讲解的内容。似乎 boost::scoped_ptr、boost::shared_ptr 这两个智能指针就可以解决所有单个对象内存的管理了,这...原创 2018-06-29 11:25:56 · 241 阅读 · 0 评论 -
小和尚上山学习之智能指针(一)--auto_ptr
// smart_point.cpp : 定义控制台应用程序的入口点。//由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、b...原创 2018-06-29 10:28:53 · 213 阅读 · 0 评论 -
小和尚上山学习之智能指针(五)--boost::shared_array
boost::shared_array 属于 boost 库,定义在 namespace boost 中,包含头文件 #include<boost/smart_ptr.hpp> 便可以使用。 由boost::scoped_array独享所有权,显然在很多情况下(参数传递、对象赋值等)不满足需求,由此我们引入 boost::shared_array。跟 boost::shared_ptr...原创 2018-06-29 11:11:10 · 1579 阅读 · 0 评论 -
小和尚上山学习之智能指针(四)--boost::scoped_array
boost::scoped_array 属于 boost 库,定义在 namespace boost 中,包含头文件 #include<boost/smart_ptr.hpp> 便可以使用。 boost::scoped_array 便是用于管理动态数组的。跟 boost::scoped_ptr 一样,也是独享所有权的。我们还是从代码开始分析:class Simple { public:...原创 2018-06-29 11:04:50 · 301 阅读 · 0 评论 -
小和尚上山学习之智能指针(三)--boost::shared_ptr
boost::shared_ptr 属于 boost 库,定义在 namespace boost 中,包含头文件 #include<boost/smart_ptr.hpp> 便可以使用。在上面我们看到 boost::scoped_ptr 独享所有权,不允许赋值、拷贝,boost::shared_ptr 是专门用于共享所有权的,由于要共享所有权,其在内部使用了引用计数。boost::sh...原创 2018-06-29 10:56:44 · 243 阅读 · 0 评论 -
小和尚上山学习之智能指针(二)--boost::scoped_ptr
boost::scoped_ptr:属于 boost 库,定义在 namespace boost 中,包含头文件 #include<boost/smart_ptr.hpp> 便可以使用。boost::scoped_ptr 跟 std::auto_ptr 一样,可以方便的管理单个堆内存对象,特别的是,boost::scoped_ptr 独享所有权,避免了 std::auto_ptr 恼人...原创 2018-06-29 10:45:43 · 181 阅读 · 0 评论 -
非常齐全的QT数据库操作详解
#include <QtSql>QT += sqlQSqlDatabase类实现了数据库连接的操作QSqlQuery类用来执行SQL语句QSqlRecord类 封装数据库所有记录第一:QSqlDatabase类QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); 采用QSQLITE数据库,QMYSQL数据库有问题?db.set...转载 2018-06-24 22:56:40 · 20025 阅读 · 3 评论 -
qt-数据库操作
#include "mainwindow.h"#include "ui_mainwindow.h"#include <QUuid>MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); qDebug()...原创 2018-06-24 20:43:06 · 311 阅读 · 0 评论 -
qt--读写文件操作
#include "widget.h"#include <QApplication>#include<QFile>#include<qdebug>int main(int argc, char *argv[]){ QApplication a(argc, argv); Widget w; //读文件 QFile file("D:/re...原创 2018-06-24 20:19:02 · 352 阅读 · 0 评论 -
QT中级--实现自定义模型
qt预定义的模型微数据的处理和查看提供了很好的方法,但是对于数据源不能和预定义的模型一起工作,这是就需要自己定制自定义模型,在模型中每一个数据元素都有一个模型索引和一套属性,称为角色。这些角色可以保存任意值。常用的角色有Qt::displayRole,Qt::EditRole:树模型和表模型比较相似,但有不同之处,对于表每一项的父对象都是根对象 ,但对于树来说就不一定每一个qmodelInde()...原创 2018-06-24 19:41:58 · 1563 阅读 · 0 评论 -
QT中级--颜色名称过滤应用程序(MVC)项-视图-控制类
//在这个项目里利用了像视图(MVC)类进行的,t中定义了好多项视图类QListWidget,QTableWidget,qtreewidget;通常我们都是把数据嵌入项视图里面,但是对于对大数据图形展示,用这种就有点吃力了,因此利用qt自带了(MVC)类就有必要了。//头文件#ifndef COLORNAMESDIALOG_H#define COLORNAMESDIALOG_H#include &...原创 2018-06-24 10:49:21 · 337 阅读 · 0 评论 -
QT--中的正则表达式的详解
Qt中有两个不同类的正则表达式. -第一类为元字符.它表示一个或多个常量表达式. -令一类为 转义字符,它代表一个特殊字符. 1) 元字符. 匹配任意单个字符.例如, 1.3 可能是1. 后面跟任意字符,再跟3^ 匹配字符串首. 例如, ^12可能是123,但不能是312$ 配字符串尾. 例如, 12$可以是312, 当不能是 123[] 匹配括号内输入的任意字符.[123]可以为1, ...原创 2018-06-24 09:18:34 · 6529 阅读 · 0 评论 -
QT--源码实现烧烤箱表盘实现
//自定义画笔、绘制窗口、表盘绘制和渐近线操作具体效果如下:间隔一秒自动旋转/*------------头函数----------------*/#ifndef OVENTIMER_H#define OVENTIMER_H#include <QDateTime>#include <QtWidgets/QWidget>#include <QTimer>cla...原创 2018-06-23 16:28:43 · 394 阅读 · 0 评论 -
QT---二维图形三种渐变模式QRadialGradient、QConicalGradient 、QRadialGradient
渐变,是指逐渐的,有规律性的变化,是一种规律性很强的现象。Qt提供了一个与渐变相关的QGradient类,目前支持三种渐变画刷,分别是线性渐变(QLinearGradient)、辐射渐变(QRadialGradient)、角度渐变(QConicalGradient),如下图所示:代码如下:/*---------------头函数-----------------*/#ifndef GRADIENT...原创 2018-06-23 12:51:38 · 1686 阅读 · 0 评论 -
c++类继承关系调用机制
/*如果子类转换为父类,如果父亲的函数为虚函数,父指针调用的函数为子的函数;否则为父亲的函数;如果父亲转向子类,如论虚实调用的都是父类函数;*/#include "stdafx.h"#include <iostream>#include <memory>#include <exception>using namespace std;using std::cout...原创 2018-06-29 15:54:25 · 612 阅读 · 1 评论 -
简单工厂模式( Simple Factory Pattern )
1. 简单工厂模式( Simple Factory Pattern )目录简单工厂模式( Simple Factory Pattern )模式动机模式定义模式结构时序图代码分析模式分析实例简单工厂模式的优点简单工厂模式的缺点适用环境模式应用总结1.1. 模式动机考虑一个简单的软件应用场景,一个软件系统可以提供多个外观不同的按钮(如圆形按钮、矩形按钮、菱形按钮等), 这些按钮都源自同一个基类,不过在...翻译 2018-06-26 10:32:35 · 169 阅读 · 0 评论 -
STL 几种容器的比较优缺点
1、set和map比较\setmap共同点都是无序的保存元素,只是通过它提供的借口对里面的元素进行访问,底层都是采用红黑树实现不同点集合,用来判断某一个元素是不是在一个组里面,使用的比较少映射,相当于字典,把一个值映射成另一个值,可以创建字典总结:a. 优点查找某一个数的时间为O(logn)O(logn)遍历时采用iterator,效果不错b. 缺点每次插入值的时候,都需要调整红黑树,效率有一定...原创 2018-07-09 13:25:25 · 6959 阅读 · 2 评论 -
c++构造函数类型的讲解
// complex.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>class complex{private: double m_real; double m_image;public: //complex(); //普通的拷贝构造函数 complex() //无参数构造函数 { this->m_rea...原创 2018-06-29 09:47:41 · 870 阅读 · 0 评论 -
C++ 常用的容器类set map multimap等使用
1:关联容器和顺序容器 c++中有两种类型的容器:顺序容器和关联容器,顺序容器主要有:vector、list、deque等。其中vector表示一段连续的内存地址,基于数组的实现,list表示非连续的内存,基于链表实现。deque与vector类似,但是对于首元素提供删除和插入的双向支持。关联容器主要有map和set。map是key-value形式的,set是单值。map和set只能存放唯一的k...原创 2018-06-28 18:56:17 · 371 阅读 · 0 评论 -
简单介绍C++ 11新增加的8种新特性
今天看了一本英文书,简单做了翻译对于c++新特性经常用但却不知道辨别,虽然c++17都已经出来了!一起学习吧!主要:初始化,auto、nullptr等//C++ 11 新特性#include "stdafx.h"#include <vector>#include<list>#include <set>#include <iostream>using ...原创 2018-06-28 18:46:57 · 498 阅读 · 0 评论 -
小和尚上山学艺-设计模式-简单工厂实战课
简单工厂模式 主要用于创建对象。新添加类时,不会影响以前的系统代码。核心思想是用一个工厂来根据输入的条件产生不同的类,然后根据不同类的virtual函数得到不同的结果。GOOD:适用于不同情况创建不同的类时BUG:客户端必须要知道基类和工厂类,耦合性差(工厂类与基类为关联关系)//操作基类class COperation{ public: int m_nFirst; //创...原创 2018-06-28 17:06:39 · 180 阅读 · 0 评论 -
qt-QDebug() 使用详解
//q经常会看到这样的语法qDebug(QString("Invalid URL: %1 Invalid URL: %2").arg(url.toString()).arg("hello"));% 1 说明第一个参数对应arg(url.toString())% 2 说明第一个参数对应arg("hello")...原创 2018-06-28 16:13:09 · 5063 阅读 · 7 评论 -
Boost库安装与使用
简介Boost库是一个可移植、提供源码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一。Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。在C++社区中影响甚大,其成员近2000人。Boost库为我们带来了最新、最酷、最实用的技术,是不折不扣的“准”标准库。Boost库中较著名库:1)Regex,正则表达式库;2)Spirit,LL pars...原创 2018-06-28 14:01:43 · 16439 阅读 · 0 评论 -
C++错误:不允许使用不完整的类型解决方案
出现这种问题的主要原因是没有找到响应类的定义!例如class A{public: void printhello(){ std::cout << "hello" << std::endl; }}/*****如果B想调用A的话第一种解决在B头文件中引用A的头文件:#include"classa.h" /*****第二种解决方案:CLASS A; 然后定义一个指针A *POI...原创 2018-06-28 10:49:31 · 23129 阅读 · 0 评论 -
隐式转换与显示转换的区别概念理解
隐式转换就是不带转换类型的转换隐式转换:说白了就是在转换时不给系统提示具体的显示模型,让其自动转换,但是要记住一条编译器一般只支持自下而上的类型转换,例如int 转 floatint a =4; float b= 5.56;b =a; //这个就是隐式转换,默认的把int a 类型的 转换为float的类型.显示转换:就是我们在c语言课程中学的,强制转换,是原创 2017-08-10 09:25:18 · 12804 阅读 · 0 评论 -
传指针和传指针引用的区别/指针和引用的区别
class d{public: int j = 122;};void fun(int * f){ //实参的地址不会变,但是内容可能会被改变std::cout << *f << std::endl; int k = 100;*f = 0; std::cout << *f << std::endl; f = &k; std::cout <...转载 2018-06-28 09:42:23 · 179 阅读 · 0 评论 -
Qt_5.7 最新QDesktopServices详解
最近需要一个按钮进行打开文件资源管理器,然后了解了这个类;下面就简单介绍一下!QDesktopServices可以打开本地浏览器,而且还可以打开1)本地文件(远程也可以)2)获取桌面3)我的文档4)Home目录5)打开网页如果你需要以上就找对了!#include "mainwindow.h"#include <QApplication>#include <QDesktopServ...原创 2018-06-28 15:57:21 · 3883 阅读 · 0 评论 -
线程池作用
线程:进程中负责程序执行的执行单元。一个进程中至少有一个线程。多线程:解决多任务同时执行的需求,合理使用CPU资源。多线程的运行是根据CPU切换完成,如何切换由CPU决定,因此多线程运行具有不确定性。线程池:基本思想还是一种对象池的思想,开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理。当有线程任务时,从池中取一个,执行完成后线程对象归池在什么情况下使用线程池? ...原创 2018-07-09 14:57:34 · 432 阅读 · 0 评论 -
面试 map set list 使用场景
1.如果你经常会使用索引来对容器中的元素进行访问,那么 List 是你的正确的选择。如果你已经知道索引了的话,那么 List 的实现类比如 ArrayList 可以提供更快速的访问,如果经常添加删除元素的,那么肯定要选择LinkedList。2.如果你想容器中的元素能够按照它们插入的次序进行有序存储,那么还是 List,因为 List 是一个有序容器,它按照插入顺序进行存储。3.如果你想保...原创 2018-07-09 13:36:45 · 788 阅读 · 0 评论 -
C++ lambda表达式与函数对象 详解
C++ lambda表达式与函数对象lambda表达式是C++11中引入的一项新技术,利用lambda表达式可以编写内嵌的匿名函数,用以替换独立函数或者函数对象,并且使代码更可读。但是从本质上来讲,lambda表达式只是一种语法糖,因为所有其能完成的工作都可以用其它稍微复杂的代码来实现。但是它简便的语法却给C++带来了深远的影响。如果从广义上说,lamdba表达式产生的是函数对象。在类中,可以重载...转载 2018-06-27 18:17:27 · 2619 阅读 · 1 评论 -
closeEvent窗口:忽略状态还是确定执行
void CPMainWindow::closeEvent(QCloseEvent * e){ CPTaskController *ptr = CPTaskController::get(); bool doingTask = ptr->witherDoneTask(); if (doingTask) { bool ret = CPMessageBo原创 2017-08-11 13:41:58 · 526 阅读 · 0 评论