![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
逸然逸生
一个技术小菜鸟,希望可以共同进步。
展开
-
C++Socket网络通信多路复用
C++Socket网络通信多路复用1.select可以在windows上面使用!服务端:/* * @Description:SOCKET * @Author: szq * @Github: https://github.com/MrQqqq * @Date: 2020-06-26 00:04:39 * @LastEditors: szq * @LastEditTime: 2020-06-26 00:04:39 * @FilePath: \cpp\src\BinaryTree\clien原创 2020-08-19 09:14:48 · 797 阅读 · 0 评论 -
C++中引用vector中元素会出现的问题
C++中引用vector中元素会出现的问题直接上一个示例:/* * @Description: * @Author: szq * @Github: https://github.com/MrQqqq * @Date: 2020-08-18 16:11:29 * @LastEditors: szq * @LastEditTime: 2020-08-18 16:16:51 * @FilePath: \cpp\src\test.cpp */#include<vector>#i原创 2020-08-18 16:25:38 · 2426 阅读 · 0 评论 -
C++算法中计算相关的函数
C++算法中计算相关的函数accumulate:累加函数。inner_product:内积函数。partial_sum:部分求和函数。adjacent_difference:相邻两个元素差函数。上面几个函数功能都是默认的,但是在使用中可以根据自己的需要修改它的功能。如下示例中:/* * @Description: 对算法中numeric中函数的一些测试和使用 * @Author: szq * @Github: https://github.com/MrQqqq * @Date: 20原创 2020-08-11 22:45:42 · 3299 阅读 · 0 评论 -
C++实现KNN算法
C++实现KNN算法、/* * @Description: C++实现KNN算法 * @Author: szq * @Github: https://github.com/MrQqqq * @Date: 2020-07-08 19:13:25 * @LastEditors: szq * @LastEditTime: 2020-07-09 16:50:55 * @FilePath: \cpp\src\KNN\KNN.cpp */ #include<iostream>#inc原创 2020-07-09 16:55:42 · 1182 阅读 · 3 评论 -
C++实现生产者和消费者问题(linux环境下)
/* * @Author: szq * @Date: 2020-07-06 18:13:23 * @Last Modified by: szq * @Last Modified time: 2020-07-06 19:19:25 * @Descripution:在Linux上面实现生产者和消费者问题 *//** * 问题描述:生产者向缓冲区中添加数据,消费者从缓冲区中拿数据。缓冲区这里设置为5. * 限制条件:1.同时只能有一个生产者向缓冲区中添加数据,并且当缓冲区满的时候,不能再原创 2020-07-06 19:22:24 · 726 阅读 · 0 评论 -
C++堆排序
C++堆排序图解排序算法(三)之堆排序1.堆排序的概念堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种**选择排序,**它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。大顶堆:每个节点的值都大于其左右孩子节点的值。小顶堆:每个节点的值都小于其左右孩子节点的值。2.堆排序基本思想与步骤堆排序的基本思想是:将待排序序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余n-1个元素重新构造成一个堆,这原创 2020-07-04 22:52:22 · 394 阅读 · 0 评论 -
C++实现银行贷款等额本息和等额本金还款
C++实现银行贷款等额本息和等额本金还款1.等额本金概念:等额本金就是每个月还款的本金是相同的,即为贷款金额/贷款月数。计算公式:B=Amonths+a∗rateB = \frac{A}{months} + a * rateB=monthsA+a∗rate其中B表示当前月的还款额,A表示贷款总额,months表示贷款总月数,a表示剩余本金,rate表示月利率。2.等额本息概念:等额本息是每个月利息和本金加起来的金额相等。计算公式为:B=A∗i∗(1+i)n(1+i原创 2020-07-01 12:04:14 · 2942 阅读 · 1 评论 -
C++删除指定文件夹下面的指定后缀的文件
C++删除指定文件夹下面的指定后缀的文件1.boost的安装和使用参考我的另一篇博客boost的安装和使用2.使用boost的filesystem#include<boost/filesystem.hpp>#include<iostream>using namespace std;using namespace boost::filesystem;int main() { string dirpath = "C:\\Users\\86151\\Desktop\原创 2020-06-21 20:53:05 · 1582 阅读 · 0 评论 -
boost库的安装和使用
boost库的安装和使用1.下载https://www.boost.org/直接下载压缩包即可,然后将压缩包解压到你自己想解压的地址。2.安装打开解压后的文件夹,运行文件夹下的bootstrap.bat,会生成一个.exe文件,可能是bjam.exe,也有可能是b2.exe。运行生成的bjam.exe或者b2.exe,会生成相应的文件最后我的文件夹下面是这样的:3.使用我使用的VS2017。创建项目右击项目打开属性页点击最下面的属性。在附加包含目录中添加boost库原创 2020-06-21 20:49:14 · 6750 阅读 · 4 评论 -
C++中struct和class的区别
C++ 中struct和class的区别struct和class定义类的时候,仅仅是形式上有所不同,实际上我们可以使用这两个关键字中的任何一个定义类。唯一的一点区别是,struct和class的默认访问权限不太一样。使用class定义一个类,类可以再它的第一个访问说明符之前定义成员,对这种成员的访问权限依赖于类定义的方式。对于class定义的类来说,在没有访问权限说明的时候,其默认的访问权限是private;而对于struct定义的类来说,其默认的访问权限是public。...原创 2020-05-14 18:55:47 · 137 阅读 · 0 评论 -
C++随机数
C++随机数1.随机数rand()函数可以用来产生随机数,但是这不是真正意义上的随机数,是一个伪随机数,是根据一个数为基准以某个递推公式推算出来的一系列数,当这一系列书很大的时候,就符合正态分布,从而相当于产生了随机数,但不是真正的随机数。2.rand()函数功能:返回一个随机数用法:int rand(void);头文件:stdlib.h注意:用户未设定随机种子时,系统默认的随机数种子为1.rand()产生的是伪随机数,每次执行时是相同的;若要不同,用srand()初始化随机数种子。3.sr原创 2020-05-13 03:50:17 · 642 阅读 · 0 评论 -
C++中内联函数和宏定义
C++中内联函数和宏定义1.内联函数针对的对象 一般来说内联机制用于优化规模较小、流程直接、频繁调用的函数。2.为什么要将函数设置为内联函数 内联函数可避免函数调用的开销。调用函数一般比求等价表达式的值要慢一些。在大多数机器上,一次函数调用其实包含着一系列工作:调用前要先保存寄存器,并在返回时恢复,可能需要拷贝实参、程序转向一个新的位置继续执行。将函数指定为内联函数(inline)通常...原创 2020-05-08 15:38:34 · 281 阅读 · 0 评论 -
C++预处理命令
C++预处理命令1. #,### 和 ## 操作符是和#define宏使用的. 使用# 使在#后的首个参数返回为一个带引号的字符串. 例如, 命令 #define to_string( s ) # s将会使编译器把以下命令 cout << to_string( Hello World! ) << endl;理解为 cout <&l...原创 2020-05-08 01:01:35 · 399 阅读 · 0 评论 -
C++中异常处理
C++中异常处理1.什么是异常? 异常是指存在于运行时的反常行为,这些行为超出了函数正常功能的范围。当程序的某部分检测到一个它无法处理的问题是,需要用到异常处理。2.异常处理的三个组成部分throw:异常检测部分使用throw表达式来表示它遇到了无法处理的问题。简单的说是throw引发了异常。try:异常处理部分使用try语句块处理异常。try语句块以关键字try开始,并以一个或多个...原创 2020-05-08 00:51:29 · 753 阅读 · 0 评论 -
C++中处理类型
C++中处理类型一、为什么要处理类型 随着程序越来越复杂,程序中用到的类型也越来越复杂,复杂体现在两个方面。一是一些类型难于拼写,名字既难记有容易拼错,还无法明确体现其真实目的和含义;二是有时候根本搞不清到底需要的类型是什么,程序员不得不回过头从程序上下文中寻求帮助。二、类型别名1.传统方法:typedef例子:typedef unsigned int size_t //这是C++中...原创 2020-05-04 04:38:48 · 159 阅读 · 0 评论 -
C++中变量的大小和字节对齐
C++中变量的大小(包含C++字节对齐知识点)一、基本数据类型变量类型大小bool1char1wchar_t2char16_t2char32_t2short2int4long4long long4float4double8long double84和操作系统有关,32位...原创 2020-05-04 03:24:38 · 648 阅读 · 0 评论 -
C++中日期和时间
C++中日期和时间1. chrono库参考文献:c++11中的日期和时间库chrono库主要包含三种类型:duration(时间间隔)、clock(时钟)、time_point(时间点)Duration表示一段时间,只要能换算成秒即可template <class Rep,class Period = ratio<1> > class duration解...原创 2020-05-03 19:26:57 · 658 阅读 · 0 评论 -
C++设计模式参考目录
C++设计模式参考目录简单工厂模式工厂模式抽象工厂模式单例模式建造者模式原型模式适配器模式桥接模式组合模式装饰模式外观模式享元模式代理模式职责链模式命令模式解释器模式迭代器模式中介者模式备忘录模式观察者模式状态模式策略模式访问者模式模板方法模式原文链...转载 2020-05-02 13:37:09 · 111 阅读 · 0 评论 -
C++多线程
C++多线程直接进入正题,如何使用c++多线程。1. 使用pthread需要包含头文件pthread:#include<pthread.h>1.1 创建线程使用pthread_create函数,使用语法如下:pthread_create(thread,attr,start_routine,arg);参数介绍:参数说明thread指向线程标识符...原创 2020-01-04 11:00:06 · 660 阅读 · 0 评论 -
C++学习笔记 之 二分查找
C++中二分查找1. 二分查找头文件2. binary_search函数介绍3. lower_bound函数介绍4. upper_bound函数介绍5. 代码示例1. 二分查找头文件在c++中要使用二分查找函数需要使用algorithm头文件,即使用之前需要加上:#include<algorithm>2. binary_search函数介绍二分查找使用是基于数组是有序的,因...原创 2019-12-23 23:37:41 · 220 阅读 · 0 评论 -
C++学习笔记STL之迭代器
STL迭代器学习总结1.迭代器的本质与简介1.1迭代器的本质1.2迭代器的简介2.迭代器的使用2.1 迭代器头文件2.2 迭代器的种类及使用2.2.1 Output Iterator2.2.2 Input Iterator3.迭代器的深度解析1.迭代器的本质与简介1.1迭代器的本质迭代器从C++11开始正式写入STL。迭代器是一个可遍历STL容器全部或部分元素的对象。迭代器用来表现容器中的某...原创 2019-12-23 14:28:03 · 1009 阅读 · 0 评论 -
C++中网络通信
C++网络通信1. 网络通信流程1.1 流式套接字(TCP)1.2 数据报套接字(UDP)1. 网络通信流程1.1 流式套接字(TCP)上图对应代码流程为:服务端创建套接字(函数:socket)服务器绑定ip和端口号(函数:bind)监听,等待客户端连接(函数:listen)接收客户端连接请求(函数:accept)接收请求数据(函数:recv)发送响应数据(函数:send)...原创 2019-12-20 23:28:40 · 1846 阅读 · 0 评论 -
项目总结 之 C++获取文件夹下所有文件
在最近做的一个项目中,需要一个获取一个文件夹下文件的功能,之前一直对文件的操作一直停留在对文件的读写,还从来没有接触过文件夹相关的操作。因此,这次有幸使用了,还是记录下来吧,以后肯定也会有很多使用的机会。参考博客C++ 文件/文件夹操作1 本人项目中使用的方法(算比较蠢的吧,还是代码写的太少了。。)需要使用dirent.h这个头文件,然后使用的基本流程是opendir ->readd...原创 2019-12-20 11:07:25 · 1968 阅读 · 0 评论 -
C++/C中,main函数的两个参数的意义
在学习C++或者C时接触的第一个例子是hello world,虽然示例很简单,但是不明白main函数的两个参数int argc和char *argv[]是什么意义。今天偶然用到这两个参数,就学习一下吧。1. int argc这个参数是代表用户传过来的参数的个数,参数为用户在运行项目时后面跟着的参数,参数之间用空格分开。例如:#include <iostream>using na...原创 2019-12-18 11:19:06 · 1184 阅读 · 0 评论 -
C++学习笔记之内存管理
内存管理1 C++内存管理详解1.1堆和自由存储区的区别和联系1.2堆和栈的区别1.2.1 管理方式1.2.2 空间大小1.2.3 碎片问题1.2.4分配问题1.3关于内存的编程习惯参考文献1 C++内存管理详解在C++中,内存分为:栈、堆、自由存储区、全局/静态存储区、常量存储区。栈:在执行函数时,函数内部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算...原创 2019-12-15 16:43:48 · 105 阅读 · 0 评论 -
C++学习路线——参照黑马程序员学习大纲
参考在网上看C++学习路线的时候看见“黑马程序员C/C++与网络攻防学习路线图学习大纲”,上面对C++学习的一些知识点列举的比较详细,所以本人借鉴一下,当成以后学习的路线。学习路线思维导图由于在原页面查看的思维导图图片的清晰度感人,所以我这里重新创建了一个思维导图,下面分享给大家。学习路线列表C++学习路线第一阶段:编程基础Unix/Linux实战C语言编程基础函数指针内存...原创 2019-12-15 15:42:48 · 1487 阅读 · 0 评论 -
C++学习笔记 指针
C++中的指针1.指针中的重点和难点1.1指针内含信息1.2void*指针1.3指针的算术运算1.4函数的指针1.5 const指针2.C++智能指针2.1 std::auto_ptr1.指针中的重点和难点1.1指针内含信息指针包含两部分信息:指向的值和类型信息。指针的类型信息决定了这个指针指向的内存的字节数并解释这些字节 信息。一般指针变量类型要和它指向的数据的类型匹配。同样的地址,因...原创 2019-12-15 14:14:50 · 172 阅读 · 0 评论 -
C++中判断数据的类型
C++中判断数据的类型 在实际的项目中经常要进行数据类型的转换,特别是字符串转成数字或者数字转字符串,而在进行数据类型转换之前要先知道数据的类型。这时如何判断一个数据的数据类型这个问题就自然而然的遇到了。在本人几次遇到这个问题的情况下,这次来做一个总结。1.typeid typeid这个函数在头文件typeinfo.h中,在使用这个函数时要加上头文件:#include<...原创 2019-12-14 20:00:38 · 37858 阅读 · 4 评论 -
C++学习笔记 字符串处理
字符串处理整理总结1.C和C++字符串对比1.1 C风格的字符串1.1 使用string类来定义1.2 使用字符串数组定义功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UM...原创 2019-12-14 21:08:35 · 213 阅读 · 0 评论 -
C++随笔之assert
C++随笔之assert头文件:assert.h函数函数功能void assert(int expression)判断expression的逻辑真假,如果为false,就会在stderr上面打印一条包含表达式、文件名、行号的错误信息,然后调用abort结束整个程序示例:#include <iostream>#include <a...原创 2020-05-02 15:29:08 · 104 阅读 · 0 评论