C++利用用埃式筛法求解素数C++利用用埃式筛法求解素数
目录埃式筛法埃式筛法求解某一个数字包含的所有素数数组埃式筛法判断某一个数字是否为素数 埃式筛法
首先要了解什么式埃式筛法之前,需要知道一个定理。
就是素数的整数倍一定不是素数。
了解了这个就基本大概懂了埃式筛法。
首先初始化一个布尔数组is_prime,用于记录每个数是否为素数。从2开...[2023/1/6]
<二>线程间互斥-mutex互斥锁和lock_guard<二>线程间互斥-mutex互斥锁和lock_guard
多线程程序
竞态条件:多线程程序执行的结果是一致的,不会随着CPU对线程不同的调用顺序而产生不同的运行结果.
解决?:互斥锁 mutex
经典的卖票问题,三个线程卖100张票
代码1
#include <iostream>
#include <thread>...[2022/12/12]
地下城地图图块生成算法
一. 概述
生成地下城,包含房间和迷宫通路。类似:
示例效果一
示例效果二
二. 思路
1.生成迷宫通路
从房间的边缘坐标XY为奇数的格子生成迷宫,确保房间和迷宫通路之间有间隔墙壁(除了蓝色格子视为墙壁)。
迷宫通路生长每次探测两个格子,确保迷宫通路间有间隔墙壁。
2.生成过...[2022/12/12]
一文读懂野指针
一、引子
我们都知道对指针( Pointer)的操作,实际上是对计算机内存地址的操作,通过访问内存地址实现间接访问该地址中保存的数据。其实就是CPU的寻址方式中的间接寻址。简单概括正常使用指针时的3个...[2022/12/5]
<一>智能指针基础
代码1
int main(){
裸指针,手动开辟,需要自己释放,如果忘记了或者因为
程序逻辑导致p没有释放,那么就会导致内存泄漏
int *p=new int(10);
if(***){
retur -1;
}
delete p;
...[2022/12/2]
为什么标准库的模板变量都是inline的为什么标准库的模板变量都是inline的
最近在看标准库里的type_traits的时候发现了个有趣的地方,几乎所有在标准库里的变量模板都是inline的!
不仅常见的实现上(libstdc++、libc++、ms stl)都是inline的,标准里给的形式定义也是inline的。
比如微软开源的stl实现:https: githu...[2022/12/2]
C++集体数据交换实现示例讲解C++集体数据交换实现示例讲解
目录一、说明二、示例和代码 一、说明
到目前为止介绍的功能共享一对一的关系:即一个进程发送和一个进程接收。链接是通过标签建立的。本节介绍在多个进程中调用相同参数但执行不同操作的函数。对于一个进程,函数可能会发送数据,对于另一个进程,它可能会接收数据。这些功能称为集体操作。
二、示例和代码
...[2022/11/23]
C++异步数据交换实现方法介绍
异步数据交换,除了阻塞函数 send() 和 recv() 之外,Boost.MPI 还支持与成员函数 isend() 和 irecv() 的异步数据交换。名称以 i 开头,表示函数立即返回。
示例 47.7。使用 irecv() 异步接收数据
#include <boost/mpi...[2022/11/23]
C++ Boost MPI接口详细讲解
目录一、说明二、开发和运行时环境三、简单数据交换 一、说明
Boost.MPI 提供了 MPI 标准(消息传递接口)的接口。该标准简化了并发执行任务的程序的开发。您可以使用线程或通过共享内存或网络连接使多个进程相互通信来开发此类程序。 MPI 的优点是你不需要关心这些细节。您可以完全专注于并行化...[2022/11/23]
C++ Boost Lockfree超详细讲解使用方法C++ Boost Lockfree超详细讲解使用方法
目录一、说明二、示例和代码 Boost.Lockfree
一、说明
Boost.Lockfree 提供线程安全和无锁容器。可以从多个线程访问此库中的容器,而无需同步访问。
在 1.56.0 版本中,Boost.Lockfree 只提供了两个容器:boost::lockfree::queu...[2022/11/23]
C++初阶(封装+多态--整理的自认为很详细)
继承
概念:继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。
语法:
基类(...[2022/11/21]
[排序算法] 快速排序 (C++) (含三种写法)
快速排序解释
快速排序 Quick Sort 与归并排序一样,也是典型的分治法的应用。 (如果有对 归并排序还不了解的童鞋,可以看看这里哟~ 归并排序)???
快速排序的分治模式
1、选取基准值,获取划分位置。将原数组 a[l, r] 划分为两个子数组 a[l, mid - 1] 和 a[mi...[2022/11/21]
为什么你的static_assert不能按预期的工作?
static_a ert是c++11添加的新语法,它可以使我们在编译期间检测一些断言条件是否为真,如果不满足条件将会产生一条编译错误信息。
使用静态断言可以提前暴露许多问题到编译阶段,极大的方便了我们对代码的排错,提前将一些bug扼杀在摇篮里。
然而有时候静态断言并不能如我们预期的那样工作,...[2022/11/21]
Codeforces Round #834 (Div. 3) A-G
比赛链接
A
题目
知识点:模拟。
确定开头字母,然后循环比较即可。
时间复杂度 \(O(n)\)
空间复杂度 \(O(n)\)
题解
#include <bit tdc++.h>
#define ll long long
using namespace std;
bo...[2022/11/19]
ROS应用层通信协议解析ROS应用层通信协议解析
参考:http: wiki.ros.org/ROS/Master_API
http: wiki.ros.org/ROS/Connection Header
说明
ROS本质上就是一个松耦合的通信框架,通信模式包括:远程调用(service-client)、订阅发布(topic)、持续通信(a...[2022/11/19]
C++初阶(类的访问权限以及封装+this指针+构造函数+析构函数+拷贝构造函数+参数列表+友元+内部类)
面向过程与面向对象
C语言是面向过程的,关注的是过程(函数),分析出求解问题的步骤,通过函数调用逐步解决问题。
C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。
类的引入与定义
类的引入
C语言中,结构体内部只能定义变量,C++中的结构体不仅可以定义变...[2022/11/16]
C++初阶(类的访问权限以及封装+this指针+构造函数+析构函数+拷贝构造函数+参数列表+友元+内部类)
面向过程与面向对象
C语言是面向过程的,关注的是过程(函数),分析出求解问题的步骤,通过函数调用逐步解决问题。
C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。
类的引入与定义
类的引入
C语言中,结构体内部只能定义变量,C++中的结构体不仅可以定义变...[2022/11/16]
C/C++实现遍历文件夹最全方法总结
目录一、filesystem(推荐)二、io.h三、win API 一、filesystem(推荐)
在c++17中,引入了文件系统,使用起来非常方便
在VS中,可以直接在项目属性中调整:
只要是C++17即以上都可
然后头文件:
#include<filesyste...[2022/9/20]
C++模板编程特性之移动语义
目录C++的值类型右值引用与移动构造和移动赋值 C++的值类型
我们知道,每个变量都有类型,或整形或字符型等来进行了分类,不仅如此,C++表达式(带有操作数的操作符、字面量、变量名等)在类型的属性上,还有一种属性,即值类别(value category)。且每个表达式只属于三种基本值尖别中的一种...[2022/8/23]
C++数据结构之二叉搜索树的实现详解C++数据结构之二叉搜索树的实现详解
目录前言介绍实现节点的实现二叉搜索树的查找二叉搜索树的插入二叉搜索树的删除总结 前言
今天我们来学一个新的数据结构:二叉搜索树。
介绍
二叉搜索树也称作二叉排序树,它具有以下性质:
非空左子树的所有键值小于其根节点的键值非空右子树的所有键值大于其根节点的键值左,右子树都是二叉搜索树
...[2022/8/22]
C++示例分析内联函数与引用变量及函数重载的使用
目录1.内联函数1.1为什么使用内联函数1.2语法2.引用变量2.1为什么要使用引用变量2.2语法2.3对于C语言的改进3. 函数重载3.1默认参数3.2函数重载 1.内联函数
1.1为什么使用内联函数
减少上下文切换,加快程序运行速度。是对C语言中的宏函数的改进。
1.2语法
#in...[2022/8/22]
C/C++函数指针深入探究
目录函数指针语法函数地址声明使用函数指针调用函数深入理解函数指针使用typedef 简化 函数指针
为什么要使用函数指针?
调用的灵活性和通用性。
试想一下,我们在设计初期并不知道我们的函数的具体实现细节。例如,我们我们想要一个排序函数qsort,但是具体排序法则我们并不确定,是降序还是升...[2022/8/22]
C++实例分析讲解临时对象与右值引用的用法
目录1.什么是临时变量2.右值引用2.1概念2.2代码实现2.3C++11新特性之移动构造2.3.1移动构造函数的介绍2.3.2代码实现 1.什么是临时变量
在栈上定义对象时,当只调用类中的构造函数时,编译器将在栈上创建一个临时对象,这个临时对象没有地址。所以他的生命周期非常短。短到下一行代码就...[2022/8/16]
详解C++异常处理机制示例介绍
目录1.C++异常处理的套路2.C++标准异常库中常用的几个异常处理类2.1异常类的例子2.2封装一个自定义异常类 1.C++异常处理的套路
C++异常处理机制之抛出异常关键字:throw
throw关键字的使用:
在哪可能出现异常就在哪里使用throw关键字抛出异常。 这个异常可以使用...[2022/8/16]
C++音乐播放按钮的封装过程详解
1、准备工作:音乐、开发工具VS stdio及图形库工具
2、设计思路:先加载音乐,再通过点击不同的按钮执行不同的操作(播放音乐,暂停音乐、继续播放、结束播放)
绘制按钮我们通过一个按钮button类来操作,这样数据会存在一些必要的访问数据权限,并可以将多个函数声明写在同一个类中,调用只需...[2022/8/15]
C++浅析程序中内存的分布
C++之程序的内存分布
最近在复习C++相关的知识,整理一下。
C++的存储区主要有以下几类:
栈区:就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。
堆区:就是那些由new分配的内存块,他们的释放编译器不去管,由我们的...[2022/8/15]
C++深入刨析优先级队列priority_queue的使用
目录一、priority_queue的介绍二、priority_queue的使用三、priority_queue的模拟实现四、容器适配器4.1、什么是适配器4.2、适配模式4.3、STL标准库中stack和queue的底层结构 一、priority_queue的介绍
priority_queue...[2022/8/3]
C++List容器常用函数接口刨析
目录一、基本结构二、list的迭代器的构造三、迭代器的实现四、insert,erase五、push_back,push_front,pop_back,pop_front六、构造函数与赋值重载七、析构与清空 一、基本结构
由源代码可知,list容器是有一个带头双向循环链表实现,所以我们模拟实现也需...[2022/8/3]
C++实现简单FTP客户端软件开发C++实现简单FTP客户端软件开发
本文实例为大家分享了C++实现简单FTP客户端软件开发的具体实现代码,供大家参考,具体内容如下
题目
简单FTP客户端软件开发(100分)网络环境中的一项基本应用就是将文件从一台计算机中复制到另一台可能相距很远的计算机中。而文件传送协议FTP是因特网上使用得最广泛的文件传送协议。FTP使用客...[2022/8/2]
关于使用rust调用c++静态库并编译nodejs包的问题关于使用rust调用c++静态库并编译nodejs包的问题
目录一、创建项目二、Cargo.toml三、package.json四、代码分析 在项目上经常要用到身份证阅读器、护照阅读仪、指纹仪等各种品牌硬件,假如每套系统的都做集成开发那代码的维护成本将变得很高,为此采用rust来调用厂家提供的sdk c++开发包并封装成nodejs包,用fastify来开发...[2022/8/2]
C++实现页面的缓冲区管理器
目录1. 实验目标2. 代码实现3.实验结果 1. 实验目标
本次实验要实现一个页面的缓冲区管理器。
具体要实现以下的函数:
~BufMgr():
清除所有脏页并释放缓冲池和 BufDesc 表
void advanceClock():
用来找到下一个时钟的位置
void...[2022/8/1]
利用C++实现?然连接操作算法利用C++实现?然连接操作算法
目录1. 实验目的2. 实验内容3. 实验结果 1. 实验目的
本次实验三需要完成的内容为实现然连接(natural join)操作算法,对两个关系进然连接,具体实现基于块的嵌套循环连接(Block-based Nested Loop Join)算法。
我们要实现的函数在 executer....[2022/8/1]
C++如何判断一个数是不是素数
目录如何判断一个数是不是素数思路实现代码快速判断一个数是不是素数(质数)朴素的方法下面介绍一个更快的方法 如何判断一个数是不是素数
题目:判断一个数是不是素数,1 < N <= 50000
思路
判断n是否整除(求余是否等于0)大于1而小于sqrt(n)中的任何一个数,如果有...[2022/7/25]
C++实现栈的操作(push和pop)C++实现栈的操作(push和pop)
目录栈的操作(push和pop)栈的组织形式栈中每个数据节点的定义栈的类的定义栈的push操作栈应用之进制转换 栈的操作(push和pop)
栈的组织形式
如上图所示:栈也是有多个数据节点组成的,每个节点包含有数据域和指向下一个节点的指针域。并且每次的push、pop和判空都是操作的栈...[2022/7/25]
C++ 如何实现顺序栈(使用模板类)
目录一、思路二、遇到问题三、实现程序 一、思路
1.用数组存储栈中的元素;2.用top保存栈顶的位置;3.进栈:top加1,然后在数组中的top位置插入x;4.出栈:top减1
二、遇到问题
1.父类中有函数为纯虚函数,定义子类对象时,出现:“ XXX is an abstra...[2022/7/25]
C++中String类型的逆序方式C++中String类型的逆序方式
目录C++String类型的逆序这里使用反向迭代器实现用String方法逆序输出字符串数组方法 C++String类型的逆序
这里使用反向迭代器实现
#include<iostream>
#include <string>
using namespace std...[2022/7/25]
C/C++合并两个升序链表的方式
目录合并两个升序链表算法的思想代码实现+注释合并K个升序链表(递归方法)归并的思想先来看合并两个有序链表的代码我们再来看合并K个链表的递归方法 合并两个升序链表
算法的思想
1.需要合并的两个链表La,Lb,合并之后的链表Lc(用La的头节点)。
2.定义两个辅助指针Pa,Pb分别是链表...[2022/7/20]
c++如何实现归并两个有序链表
目录归并两个有序链表1、题目描述2、设计思路将两个有序链表合并为一个新的有序链表并返回示例在力扣上的提交结果 归并两个有序链表
1、题目描述
利用基础题里构建的单链表类创建两个有序的整数链表对象,实现将两个有序链表归并成一个新的有序链表并输出该新有序链表的结果。(可以调用已定义的链表类的方法...[2022/7/20]
C++中string使用+号与int拼接方式
目录string使用+号与int拼接string类的+与+=运算符string对象的运算符+和运算符+=效率差很多为什么我在使用string的+运算或+=运算时会报错? string使用+号与int拼接
由于C++中的没有默认的使用string类型直接用加号拼接数字,但是时长会使用的用strin...[2022/7/20]
C++中memcpy函数的使用以及模拟实现
目录前言一、什么是memcpy二、memcpy与strcpy的区别1.strcpy2.memcpy三、模拟实现memcpy总结 前言
memcpy函数如何使用,以及如何实现我们自己的my_memcpy在这里给大家详细介绍。
一、什么是memcpy
memcpy是c和c++使用的内存拷贝函...[2022/7/19]
C++中Boost的智能指针scoped_ptr
boost::scoped_ptr和std::auto_ptr非常类似,是一个简单的智能指针,它能够保证在离开作用域后对象被自动释放。下列代码演示了该指针的基本应用:
#include <string>
#include <iostream>
#include &l...[2022/7/4]
C/C++?extern和static的使用详解
目录前言externstaticc++ static members in cla 总结 前言
在讲到extern和static的时候先了解一下定义和声明的基本概念
定义(define):
A variable is defined when the compiler allocates...[2022/6/27]
最新C/C++中的new和delete的实现过程小结
目录newdeletenew[]delete[] 下面是《C++ Primer 5th》中P726 对 new 和 delete 过程的解释:
当我们使用一条new表达式时,实际上执行了三步操作:
new表达式调用一个名为 operator new (或者 operator new[] )的标...[2022/6/27]
OpenCV实现无缝克隆算法的步骤详解
目录一、概述二、函数原型三、OpenCV源码1、源码路径2、源码代码四、效果图像示例 一、概述
借助无缝克隆算法,您可以从一张图像中复制一个对象,然后将其粘贴到另一张图像中,从而形成一个看起来无缝且自然的构图。
二、函数原型
给定一个原始彩色图像,可以无缝混合该图像的两个不同颜色版本。
...[2022/6/21]
C++类实现通讯录功能C++类实现通讯录功能
本文实例为大家分享了C++类实现通讯录功能的具体代码,供大家参考,具体内容如下
软件使用的是Microsoft Visual Studio
编写通讯录之前,先思考一下要实现什么功能,大概的结构,要创建几个类等等。
首先,是思考要实现什么功能。
一般的通讯录有添加,删除,修改,查找,...[2022/6/20]
C++使用链表存储实现通讯录功能管理C++使用链表存储实现通讯录功能管理
本文实例为大家分享了C++使用链表存储实现通讯录功能管理的具体代码,供大家参考,具体内容如下
简介
这是第二周老师给的一个小项目要求实现基本通讯录功能,有数据的增删改查,包含插入时间的能力。
代码详情
头文件
#include <iostream>
#include ...[2022/6/20]
C++实现通讯录管理系统项目
本文实例为大家分享了C++实现通讯录管理系统的具体代码,供大家参考,具体内容如下
1、通讯录设计要点
1:添加联系人:向通讯录中添加新人(包括:性别,年龄,联系电话,家庭住址),并且最多记录1000人2:显示联系人:显示通讯录中所有联系人信息3:删除联系人:按照姓名进行删除指定联系人4:查找...[2022/6/20]
C++实现通讯录功能
本文实例为大家分享了C++实现通讯录的具体代码,供大家参考,具体内容如下
简介:通讯录由一个拥有者以及通讯信息组成。
基本功能:增删改查
拥有者和通讯信息的基础结构相同,由struct构成
struct Person {
?? ?int m_id;
?? ?string m_n...[2022/6/20]
C++实现通讯录管理系统设计
本文实例为大家分享了C++实现通讯录管理系统的具体代码,供大家参考,具体内容如下
最核心的内容是结构体,结构体数组与指针
主要功能包括:添加联系人 ;显示联系人;删除联系人 ;查找联系人 ;修改联系人 ;清空联系人
1.主界面
2.添加联系人
3.显示联系人
...[2022/6/20]
C++实现简易通讯录功能
目录实现功能一、定义通讯录和通讯录人员结构体二、实现通讯录输入菜单1.定义菜单函数:2.主函数循环体中循环展示菜单信息三、实现增删改查和清空通讯录功能四、运行截图展示 本文实例为大家分享了C++实现简易通讯录功能的具体代码,供大家参考,具体内容如下
实现功能
提示:这里可以添加本文要记录的大...[2022/6/20]