C/C++语言
文章平均质量分 63
夜雨听萧瑟
每天进步一点点。
展开
-
std::find_if函数结合函数对象、lambda表达式查找元素
std::find_if函数头文件:#include 里面。函数意义:查找满足条件的元素的第一次出现。时间复杂度O(n)。参数:first − 输入迭代器到初始位置。last − 最终位置的最终迭代器。pred − 一元谓词,即:接收一个参数的函数对象或者一个参数的lambda表达式,return:返回一个迭代器,指向 (first,last) 范围内满足条件的第一个元素.没有找到,指向最后一个元素。谓词介绍返回bool类型的仿函数称为谓词。原创 2024-05-16 22:39:26 · 785 阅读 · 0 评论 -
C++ 使用共享内存的进程通信方式模拟生产者消费者模型
C++ 使用共享内存的进程通信方式模拟生产者消费者模型,进程间的同步使用信号量SystemV方式。原创 2024-04-16 23:06:37 · 416 阅读 · 1 评论 -
设计模式之构建器(Builder)C++实现
构建器模式的C++代码实现。在软件功能开发中,有时面临“一个复杂对象”的创建工作,该对象的每个功能接口由于需求的变化,会使每个功能接口发生变化,但是该对象使用每个功能实现一个接口的流程是稳定的。构建器就是解决该类现象的。构建就是定义一个抽象类,然后将变化的每个功能接口定义为虚函数,稳定的流程定义为函数接口;其他有变化的类继承该抽象类。有一个产品需要经过设计、制作、包括、出售这几个步骤,才可以完成整个功能。每个产品都会有这几个步骤,但每个产品对应的具体细节是不一样的。原创 2023-08-16 21:44:38 · 615 阅读 · 0 评论 -
设计模式之原型模式Prototype的C++实现
设计模型之原型模式C++代码实现。在软件功能设计中,经常面临着“某些结构复杂的对象”的创建工作,且创建的对象想拥有其他对象在某一刻的状态,则可以使用原型模型。原型模型是通过拷贝构造函数来创建对象,并且该对象拥有其他对象在某一刻的状态。上面代码main函数中的创建方式根据实际情况选择,如果想隔离new,则使用方式1。原型模式的优点是将创建对象(该新创建的对象具有其他对象的状态,但与其他对象的地址区域是相互独立的)变得比较简洁。设计产品A,B,这个产品有重量和单价,输出产品的价格。3、原型模式代码实现。原创 2023-08-16 18:56:41 · 729 阅读 · 0 评论 -
设计模式之Bridge模式的C++实现
Bridge模式的C++实现。类实现的功能具有两个变化的维度,甚至由多个维度的变化。Bridge模式使用“对象间的组合关系”解耦抽象和实现之间固有的绑定关系,使得抽象和实现可以沿着各自的维度变化,即将不同的维度分别进行抽象,然后各自根据变化维度进行继承。Bridge模式的应用一般在“两个非常强的变化维度”,有时一个类甚至由多个变化的维护,这时使用Bridge模式的扩展模式来进行设计代码。原创 2023-08-09 22:38:11 · 905 阅读 · 0 评论 -
C++信号量与共享内存实现进程间通信
C++信号量与共享内存实现进程间通信。原创 2023-07-28 17:46:08 · 420 阅读 · 0 评论 -
信号量SytemV与Posix信号量的介绍与用法
信号量是一种计数器,用在多进程、多线程的共享资源访问控制上面,防止多进程、多线程对共享资源的同时读写。信号量种类有SystemV信号量和Posix信号量。信号量SystemV是Linux操作系统的内核对象,由内核同一管理,它的生命周期不依赖创建的进程,即使进程退出,信号量依然存在。信号量SystemV常用于多进程间的同步。最简单的信号信号量是只能取0和1的变量,也叫做二进制信号量,可以去多个正数的信号量被称为通用信号量,本文主要讲解二进制信号量。原创 2023-07-26 23:24:08 · 430 阅读 · 0 评论 -
C++ 创建共享内存
共享内存用于实现进程间大量的数据传输,共享内存是在内存中单独开辟一段内存空间,这段内存空间有自己特有的数据结构,包括访问权限、大小和最近访问时间等。返回值:(1)成功,返回共享内存标识符(2)出错,返回-1,错误原因存于errno中。shmflag: 指定共享内存的访问权限和映射条件,一般设置为0,即读写权限。返回值:成功:0,出错:-1,错误原因存在于errno中。返回值:成功:0,出错:-1,错误原因存在于errno中。参数:shmaddr:指定共享内存的映射地址。作用:共享内存的内存管理。原创 2023-07-16 19:12:29 · 2598 阅读 · 1 评论 -
进程间通信方式介绍
进程间通信方式介绍:(1)管道 (2)命名管道 (3)信号(4)消息队列 (5)信号量 (6)共享内存 :共享内存就是映射一段能被其他进程访问的一块内存,该块内存由一个进程创建,多个进程访问。共享内存是进程间通信最快的进程通信方式。共享内存常跟信号量配合,来实现进程间的数据同步。(7)套接字 :套接字与其他通信机制最大的不同就是可用于不同设备间、不同系统间的进程通信。原创 2023-07-16 11:48:55 · 355 阅读 · 0 评论 -
C++ 中chrono与gettimeofday获取时间与计算程序运行时间
C++计算程序运行时间。gettimeofday获取时间与计算程序运行时间。std::chrono::steady_clock获取时间与计算程序运行时间。秒与毫秒、微妙、纳秒的关系。原创 2023-07-15 15:31:20 · 1235 阅读 · 0 评论 -
C++ 可变参数函数用法与template模板泛型编程
C++ 可变参数函数与template模板用法。a> 在宏函数中使用可变参数,可以重定义输出打印函数。b> 在普通函数使用可变参数,可以适配不同的参数个数。c> 在线程池的任务队列中使用可变参数,可以适配不同的参数的线程任务函数。模板template泛型编程。原创 2023-07-15 16:56:24 · 405 阅读 · 0 评论 -
C++中空类、包含非静态成员类、包含静态成员类与包含虚函数类的sizeof字节计算与虚函数表指针介绍
C++中空类、包含非静态成员类、包含静态成员类与包含虚函数类的sizeof字节计算与虚函数表指针介绍。1、计算空类 2、包含非静态成员变量类 3、包含静态成员变量类4、包含普通成员函数类 5、包含虚函数类 6、继承虚函数类7、多重继承类 8、虚函数表。 只要基类有虚函数,子类不论实现或没实现,都有虚函数表。子类不会和父类共用一个虚函数表,每个类都会有一个虚函数表。原创 2023-07-10 08:09:47 · 523 阅读 · 0 评论 -
策略模式Strategy介绍与C++实现
策略模式的介绍和C++实现。定义一系列算法,将它们一个一个都封装起来,并且使它们可互相替换(变化)。该模式使得算法可独立于使用它的客户程序(稳定结构)而变化(扩展--->子类化)。即:使用算法的客户程序流程不会随着算法需求的变化而变化,对于算法需求的变化可以在子类中进行适配。(1)策略模式提供了条件判断语句if/switch的另一种实现方法,可以实现多个算法之间的解耦。注意:如果if、switch的条件类型是固定的,不会再扩展的话(eg:if的判断只有5种情况,不会再出现其他情况),则不使用策略类型。原创 2023-06-23 18:06:31 · 595 阅读 · 0 评论 -
单例模式C++实现和观察者模式C++实现
1、单例模式介绍 2、单例代码C++实现 3、观察者模式介绍 4、观察者模式C++代码实现单例实现3种方式(1)懒汉式。(使用时进行实例化。存在线程安全问题)(2)静态局部变量。(使用时进行实例化。不存在线程安全问题)(3)饿汉式。(单例类创建的时候进行实例化。不存在线程安全问题)。static静态成员变量,static类成员变量,static静态成员函数介绍和用法。原创 2023-06-04 18:26:50 · 1018 阅读 · 0 评论 -
设计模式之-模板方法模式C++实现与C++模板template用法
设计模式之-模板方法模式C++实现与C++模板使用。模板方法模式使用比较常见,也比较简单,模板方法模式是属于设计模式中的行为设计模式。行为设计模式是关注对象的行为或者交互方面的内容,主要涉及算法和对象之间的职责分配。原创 2023-06-04 10:42:06 · 642 阅读 · 0 评论 -
简单工厂模式与工厂方法模式的C++代码实现
创建型模型设计介绍1、简单工厂模式C++代码实现2、工厂方法模式C++代码实现3、简单工厂模式与工厂方法模式的简单比较原创 2023-05-31 23:27:00 · 327 阅读 · 0 评论 -
C++设计模式介绍、分类与设计模式原则
一、设计模式定义二、设计模式的优点三、设计模式缺点四、设计模式中的抽象思维五、抽象的方法六、设计模式应用场景七、设计模式分类八、设计模式八大原则附加知识(1)C++面向对象三种访问修饰符(2)父类析构函数必须为虚函数(3)override关键字使用(4)final关键字使用(5)父类对象可以与子类对象相互转化吗(6)虚函数、虚函数表介绍原创 2023-05-24 21:48:09 · 2977 阅读 · 1 评论 -
C++线程池介绍和C++代码实现
C++线程池的介绍和使用场景,C++线程池demo实现。原创 2023-05-24 15:40:46 · 1879 阅读 · 0 评论 -
C++ 使用多线程间通信方式模拟消费者生产者模式demo
【代码】C++消费者生产者模式简单demo。原创 2023-05-24 14:22:55 · 235 阅读 · 0 评论 -
opengl、opengl es、webgl介绍与opengl开发入门
opengl 、opengl es、webGL介绍; opengl 封装库介绍;glfw编译安装;oepngl开发入门。原创 2023-03-05 17:51:20 · 1102 阅读 · 0 评论 -
C++工程的CMakeLists.txt文件编写
C++工程的CMakeLists.txt文件的demo编写。CMakeLists的介绍和简单用法原创 2023-01-29 22:49:38 · 2239 阅读 · 1 评论 -
C++中拷贝构造函数、拷贝赋值运算符、析构函数、移动构造函数、移动赋值运算符(三/五法则)
拷贝构造函数、拷贝赋值运算符、析构函数、移动构造函数、移动赋值运算符用法拷贝构造函数、拷贝赋值运算符、析构函数、移动构造函数、移动赋值运算符介绍什么时候定义拷贝构造函数和拷贝赋值运算符。原创 2023-01-29 21:02:53 · 2626 阅读 · 0 评论 -
C++中函数对象模板function<T>、通用函数适配器std::bind和lambda
C++function用法、C++ std::bind用法、C++ lambda用法、using的使用、std::placeholders::_1用法原创 2023-01-27 19:54:36 · 1585 阅读 · 0 评论 -
ubuntu20.04的 ROS安装、入门与ROS的CMake配置
ubuntu20.04的 ROS安装与入门简单介绍。gpg: no valid OpenPGP data found.VSCode使用CMakeLists配置ROS环境原创 2022-11-19 16:35:11 · 676 阅读 · 0 评论 -
C++ STL中vector、list、deque顺序容器使用介绍
容器分为顺序容器和关联容器,顺序容器提供了控制元素存储和访问顺序的能力,这种顺序不依赖于元素的值,而是与元素加入时的位置相对应。原创 2022-08-19 12:50:34 · 1177 阅读 · 0 评论 -
C++中大小端存储模式介绍和检测demo
大端模式:是指数据的高字节保存在内存的低地址中。小端模式:是指数据的高字节保存在内存的高地址中。原创 2022-08-12 22:47:52 · 698 阅读 · 0 评论 -
内存管理、系统内存分区和C++内存分区简述
简单的来说,内核态操作权限高,用户态的操作权限低。用户态可以通过系统的API函数来进行操作硬件设备和内存。用户态和内核态的机制提供了操作系统的稳定性和可用性。电脑的内存资源有限,系统中运行的进程是无限的,所以说,电脑不能运行太多的进程,如果运行进程数量过多,则会出现电。,当进程运行在用户态时,进程使用的时用户态的空间;当运行在在内核态时,使用的时内核态空间。每个进程的空间地址分配机制都是已有的,每个进程在。,甚至由于资源有限,新的进程不能正常运行。1、为什么需要管理内存呢?内存管理就是系统管理。......原创 2022-07-18 21:00:18 · 507 阅读 · 1 评论 -
C++/Qt获取屏幕尺寸和放大比例
C++/Qt获取屏幕尺寸和放大比例原创 2022-06-23 08:00:00 · 4050 阅读 · 2 评论 -
C++中指针数组大小的判断
_msize() 返回 new 分配内存的大小_hongye_05的博客-CSDN博客__msizehttps://www.jianshu.com/p/abc8824c4f9d原创 2022-05-17 22:04:54 · 812 阅读 · 0 评论 -
多语言id1033,2052
详见链接:https://www.csdn.net/tags/OtDagg1sNjA3NzgtYmxvZwO0O0OO0O0O.html原创 2022-04-14 16:51:00 · 580 阅读 · 0 评论 -
C++字符编码的查看和检测
汉字字符集编码查询;中文字符集编码:GB2312、BIG5、GBK、GB18030、Unicode原创 2022-03-15 11:38:21 · 6378 阅读 · 2 评论 -
jsoncpp添加对象、数组与json对象的解析
1、添加json的对象Json::Value js;js["method"] = "funcName";js["ttl"] = "123";js["Char"]["name"] = "hello";std::string str = js.toStyledString();上述的json对象如下:{ "method":"funcName", "ttl":"123", "Char": { "name":"hel原创 2022-01-16 23:41:34 · 7235 阅读 · 0 评论 -
输出ipv4,ipv6特定段的所有地址,ipv6地址转换成网络字节序
// ipv6.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <stdio.h>#include <stdlib.h>#include <string.h>#include <WS2tcpip.h>#include <iostream>#include <WinSock2.h>#include <string>using namespace std;#pr.原创 2021-11-22 23:03:42 · 3006 阅读 · 1 评论 -
线程池创建线程数量讨论
创建多少个线程合适 - 经济人 - 博客园平均每个线程cpu运行时间_写给大忙人看的如何优雅设置线程池的大小_weixin_39572152的博客-CSDN博客原创 2021-10-29 14:37:45 · 200 阅读 · 0 评论 -
C++中result_of用法
result_of主要用于目标函数定义的类型推导中,在C++中auto也会自动推导类型,但是初始值不赋值时,auto是不能推导出目标类型,但result_of是可以推导出类型。result_of的用法如下:template <class Fn, class... ArgTypes>struct result_of<Fn(ArgTypes...)>模板参数:(1)Fn可调用类型(即函数对象类型或指向成员的指针),或对函数的引用,或对可调用类型的引...原创 2021-10-05 22:07:40 · 4231 阅读 · 0 评论 -
C++中命名规则
1、常见命名法介绍见:编程命名规范之驼峰命名法、匈牙利命名法 - eedc - 博客园一、骆驼命名法: 小驼峰法(camel方法)变量一般用小驼峰法标识。 第一个单词以小写字母开始;第二个单词的首字母大写或每一个单词的首字母都采用大写字母,例如:myFirstName、myLastNahttps://www.cnblogs.com/eedc/p/7805207.html2、编程中命名规则:我的C++编程命名规范_huayehanshan的专栏-CSDN博客在软件开发过程中,代码的命名规范是一项很突出原创 2021-09-28 14:21:41 · 349 阅读 · 0 评论 -
C/C++操作注册表键值添加/查询/删除详解
https://jingyan.baidu.com/article/3a2f7c2e76744a26aed61140.htmlC++ 写入注册表_CTLLIN的专栏-CSDN博客C++ 注册表的读写_zhengkangchen的专栏-CSDN博客原创 2021-09-23 22:02:13 · 2200 阅读 · 0 评论 -
sqlite数据库文件的下载编译和VS中数据库创建demo
1、下载编译文件SQLite Download Pagehttps://www.sqlite.org/download.html(1)下载sqlite-amalgamation获得头文件解压后(2)下载对应的sqlite-dll-win32-x86-3360000.zip,获取dll和生成lib文件解压后(3)在sqlite-dll-win32-x86-3360000文件下的cmd, 输入:LIB /DEF:SQLITE3.DEF /MACHINE:IX...原创 2021-09-22 23:47:43 · 495 阅读 · 0 评论 -
ipv6格式介绍和地址数量计算
IPv6地址格式和分类详解_是曹大大的博客-CSDN博客_ipv6 分类原创 2021-09-10 11:18:07 · 2005 阅读 · 0 评论 -
VS添加lib库文件步骤
https://www.cnblogs.com/bookdrip/p/10208244.html原创 2021-09-06 22:26:06 · 1068 阅读 · 0 评论