![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
BlackCarDriver
这个作者很懒,什么都没留下…
展开
-
C++11 多线程
本文讨论C++11 中如何创建和使用多线程,以及如何解决资源进程、数据同步等问题。C++ 11 多线程文章目录C++ 11 多线程创建和使用线程连接和分离线程关于参数传递数据竞争问题与解决顺序控制线程返回值std::asyncstd::packaged_task注意事项创建和使用线程在C ++ 11中,我们可以通过创建std :: thread类的对象来创建其他线程。每个std :: th...原创 2020-04-19 21:47:20 · 823 阅读 · 0 评论 -
四则运算表达式求值
本文将讨论什么是运算表达式,如何用代码实现中缀表达式转后缀表达式、前缀表达式,以及对后缀表达式的求值。原创 2020-04-16 14:50:55 · 723 阅读 · 0 评论 -
关于 C++11 Lambdas
Lambdas本文将介绍什么是Lambdas函数及如何使用Lambdas函数。什么是Lambdas函数Lambda函数是C ++中的一种匿名函数,主要用作C ++中的回调,它主要在我们必须创建非常小的函数以作为回调传递给另一个API时使用。使用场景和示例假设现在我有一个整数数组,我想遍历此数组并使用STL算法for_each打印所有元素。首先让我们使用函数指针来做到这一点,void ...原创 2020-04-13 16:39:42 · 457 阅读 · 0 评论 -
可变参数模板
可变参数模板C++11引进了一个新功能:Variadic Template Function (可变参数模板)。通过可变参数模板,我们可以创建出接受任意类型、任意个数参数的函数。如何使用一个声明可变参数模板的简单例子:template<typename T, typename ... Args>void log(T first, Args ... args);上面的函数可...原创 2020-04-12 10:42:38 · 405 阅读 · 0 评论 -
关于std::bind
关于 std::bindstd::bind C++ 11 的一个新函数,返回值为一个函数对象,可以看作一个通用的函数适配器。它接受一个函数作为参数,并返回一个新的函数同时将一至多个参数绑定到返回的函数中。下文的内容包括如何使用bind 以及什么时候使用bind。如何使用假如我们已经有一个函数:int add(int a, int b){ return a + b;}bind将一个函...原创 2020-04-11 14:25:02 · 402 阅读 · 0 评论 -
Delete 关键字新特性
Delete 关键字新特性在C ++ 11中,引入了关键字delete的新功能。我们可以将delete关键字应用于限制函数的使用。下文将演示以下常见的使用场景:应用于编译器自动生成的函数以禁止使用特定的操作(如复制,比较)应用在成员函数上防止数据类型转换时导致数据丢失应用在new运算符上来限制堆上对象的创建应用在模板类上来限制创建特定的类实例禁用复制构造函数和赋值运算符我们可...原创 2020-04-10 15:27:28 · 579 阅读 · 0 评论 -
经典排序算法复习
十大经典排序算法备忘录本博客用于快速复习几种简单排序算法。这些算法虽然经典,但是都很简单,只要明白其思想和原理,都能很快写出来。关键是要把握好一些细节之处,例如循环边界等。代码#pragma warning(disable : 4996)#include<iostream>#include<vector>#include<algorithm>#...原创 2020-03-08 00:17:41 · 416 阅读 · 0 评论 -
最短路之Bellman-ford 算法
Bellman-ford 算法算法摘要作用:单源有向图上求最短路特点:能适应负权边的情况思想:动态规划时间复杂度: O(点数×变数)原理:对所有的边进行n-1轮松弛操作,(n个顶点的图中,任意两点之间的路径最多包含n-1边)注意事项:需要判断是否产生负权回路 (再对边进行一次内部循环,如果还有可以松弛的点,说明有负权回路)c++代码#include<iostream>...原创 2020-03-06 11:16:37 · 290 阅读 · 0 评论 -
STL常用函数应用举例
STL常用函数应用举例备忘录只要明白函数的作用,一般即可以联想到其参数。像unique(), remove()这类的函数需要注意,对容器进行操作后不会改变原有的元素个数,可以通过函数返回的迭代器进行下一步操作。对于一些会改变元素个数的操作,如merger(),结果需要放到一个新的容器里面,并且传参时仅需开始迭代器。对于copy类函数:存放结果的容器串传参时只需开始迭代器;...原创 2020-03-04 16:27:29 · 382 阅读 · 0 评论 -
C++堆排序模板
C++堆排序模板#pragma warning(disable : 4996)#include<iostream>#include<vector>#define ARRAY vector<int> //下标从0开始有效using namespace std;//调整最大堆(升序)void heapAdjust(ARRAY *ary, int r...原创 2020-03-03 20:47:12 · 328 阅读 · 0 评论 -
c++保存 vector 到文件
c++ 保存 vector 到文件实现将vector中的数据保存到二进制文件和从文件中读取数据并还原vector并不难,关键是要把握好一些小细节背后的原理,以及确定好存储的格式。确定格式跟网络通信中的通信协议非常相似,只用存取双方都依照协议行事,才能完成完整步骤。以下代码提供例子,仅供参考:#include<iostream>#include<stdio.h>#in...原创 2019-12-24 22:05:09 · 10495 阅读 · 4 评论 -
磁盘调度算法
磁盘调度算法本文内容用c++写了一个简单的控制台程序用来演示几种调度算法的磁头移动过程, 包括:先来先服务法(First-Come, First-Served,FCFS)。最短寻道时间优先法(Shortest Seek Time First, SSTF)。电梯法。知识点先来先服务算法(FCFS )First Come First Service特点:一种简单的磁盘调度算法。根...原创 2019-12-07 16:38:27 · 896 阅读 · 5 评论 -
QT中引入WinPcap
在Qt项目中使用Winpcap注意需要做以下(包括但不限于)前期准备:1.修改.pro文件,例如:INCLUDEPATH += D:/WorkPlace/C++WorkPlace/Library/WpdPack/IncludeLIBS += "-LD:/WorkPlace/C++WorkPlace/Library/WpdPack/Lib" -lwpcap -lws2_32DEFINES ...原创 2019-12-04 16:46:31 · 1190 阅读 · 0 评论 -
银行家算法
银行家算法银行家算法主要用于避免死锁。原理是进行资源分配之前先计算资源分配的安全性,分配不会导致系统进入不安全状态,则将资源分配给进程。否则让进程等待。注意该算法的核心是安全性的判断:可以理解成一个闯关游戏,若主角的攻击力、防御力、(剩余资源数量)全部都高于某个敌人对应的攻击力、防御力(对应的请求资源的数量), 则主角可以打败这个怪兽并全部获取怪兽的属性(分配和回收资源),若主角可以在这个规则下...原创 2019-11-23 15:56:34 · 905 阅读 · 0 评论 -
线段树区间操作总结
昨天复习了几个月前自己写下的线段树区间操作总结的算法笔记,虽然注释很多,但重新再看时发现注释仍然不够。于是这次重新复习了线段树区间操作算法,已一个初学者的角度来加上许多注释和笔记。我将线段树的区间操作,包括区间运算,区间求值封装到了一个类里。两种操作又包含普通版和lazy标签版,下面是代码:#include<iostream>#include<stdio.h>#i...原创 2019-03-07 08:50:23 · 451 阅读 · 0 评论 -
c++结构体排序方法总结
在写算法时,若要对自定义的结构体或类进行排序,常常以重载运算符的方式,加上标准模板库里的sort()函数进行排序。但是有时我们需要排序的对象是结构体的指针,这时就要使用其他方法。本文记录我的使用的两种算法模板,以供复习。#include<iostream>#include<stdio.h>#include<string>#include<vecto...原创 2019-03-19 18:56:45 · 4512 阅读 · 0 评论 -
c++ 常用数学算法复习
快速幂算法#define maxn 1e9+7//求a^b mod c int quick_mod(long long a,long long b,long long c) { int ans=1; a=a%c; while(b!=0) { if(b&1) ans=(ans*a)%c; b>...原创 2019-03-20 16:59:17 · 359 阅读 · 0 评论 -
用c++实现自动排序的单向链表
这是一个数据结构作业:用c++编写如下数据结构:在单向链表的基础上,加入一个自动排序的功能,要求任何时候链表都是升序的。要实现基本的插入和输出功能。分析:这个链表在功能上类似优先队列 priority_queue 。相同点:都是非线性结构,都是不限制数据量的容器,每次插入数据后都能保持数据顺序。不同点:优先队列采用二叉堆结构,实现自动排序的代价很低,而链表则要每次向后遍历,直至找到合适的位...原创 2019-03-12 16:11:03 · 673 阅读 · 1 评论 -
最小树之kruskal算法
生成最小树是指在一个无向连通图上选择适当的边,生成一个子连通图满足全部边的权重加起来最小的条件应用:给出n个城市和各个城市间的距离,问若要修建若干个公路连通所有城市,问应该如何修建和这时的公路长度。。。以下是经 黑车司机 总结和优化的最小树算法用到的数据结构1.node_set[i] ,节点i所属的集合,刚开始是i2.size[i],集合i包含的节点,刚开始是13.edge[i], e...原创 2019-03-12 17:19:29 · 740 阅读 · 0 评论 -
C++结构体数组的文件读写
程序设计中常常需要用到文件读写的功能,需要将程序产生的数据保存到磁盘,下次打开程序时读取这些数据,恢复上次退出程序时的状态。由于数据的数量不确定,常常使用vector等容器来存储数据,保存到文件时可以使用一下方法:My Code:#include<iostream>#include<stdio.h>#include<string.h>#include&...原创 2019-03-28 14:52:14 · 4052 阅读 · 1 评论 -
c++连接MySql进阶
c++ 写MySql工具类本文主要总结和记录又本人设计的一个mysql连接工具类SqlPackage。本工具类提供了常用的sql命令的执行接口,利用本工具类提供的方法能够非常地方便地在c++代码中实现绝大部分的常用数据库操作。以下链接是一个使用本工具实现的 学生成绩管理系统案例:BlackCarDriver/student-manage-system若初次在c++中使用mysql数据...原创 2019-06-13 23:24:35 · 322 阅读 · 0 评论 -
c++连接mysql入门
c++使用mysql前言本文介绍c++使用mysql数据库连接的前期准备,以及如何在代码中实现简单的数据库操作。环境与前期准备操作系统:windows10IDE: vs2013mysql: 本机已安装 mysql 5.5创建项目:创建一个空项目,本例选择win32 console Application,项目名为:cpp-mysql,.初始代码:创建main.cpp,内容如下:...原创 2019-06-10 19:09:32 · 9506 阅读 · 5 评论 -
课程设计之:MFC做学生成绩管理系统
课程设计题目要求以下两题任选一题:题目一:应用MFC应用程序实现学生信息管理系统(1)、设计一个学生类Student,包括数据成员:姓名、学号、二门课程(面向对象程序设计、高等数学)的成绩。(2)、创建一个管理学生的类Management,包括实现学生的数据的增加、删除、修改、按课程成绩排序、保存学生数据到文件及加载文件中的数据等功能。(3)、创建一个基于对话框的MFC应用程序,程序窗...原创 2019-02-27 13:27:38 · 3308 阅读 · 7 评论