模板类型推导模板类型推导中最重要的是弄清它什么时候会抛弃引用,什么时候会抛弃常量性•template<typename T> void func(T& param);在这个示例函数中,如果传递进是一个const int&的对象,那么T推导出来的类型是const int,param的类型是const int&。可见引用性在型 ......
211
0
0
2024-03-13
文章目录一、查找指定元素 - std::map#find() 函数1、函数原型简介2、代码示例二、获取元素个数 - std::map#count() 函数1、函数原型简介2、代码示例三、获取大于等于指定键的元素 - std::map#lower_bound 函数1、函数原型简介2、代码示例四、获取大于指定键的元素 - std::map#upper_bound ......
169
0
0
2024-03-12
一、前言数学在计算机编程中扮演着至关重要的角色,C语言的math.h头文件提供了一系列的函数和工具,用于数学计算和常用数学函数的实现。这些函数包括数值运算、三角函数、指数对数函数等,为开发人员提供了强大的数学处理能力。本文将对math.h头文件中的所有函数进行全面介绍,包括功能和使用方法,以帮助大家更好地理解和利用该头文件。在 C 语言中,math.h 头文 ......
183
0
0
2024-03-12
这里写目录标题封装C语言封装风格C++封装继承多态多态的实现虚函数概念:虚表指针overloadoverwriteoverride抽象类重载封装C++中的封装是一种面向对象编程的概念,它将数据(成员变量)和操作(成员函数)封装在一个类中,通过访问控制来限制对类内部实现的访问。封装提供了类与外部世界之间的接口,隐藏了类的内部实现细节,提高了代码的可维护性和安全 ......
166
0
0
2024-03-12
C语言标准库中并没有提供线程池的实现,线程池需要手搓实现线程池的基本思路是:先创建几个固定的线程,让每个线程运行起来,然后通过互斥锁和条件变量使得每个线程进入等待状态,当需要分派线程时,改变条件变量,使得某个线程退出等待状态开始执行传入的函数参数,执行完后重新进入等待状态。同时实现了一个队列来存储需要执行的任务。Task结构体用于表示线程池需要执行的任务,包 ......
197
0
0
2024-03-12
文章目录一、map 容器迭代器遍历1、map 容器迭代器2、代码示例二、map 容器插入结果处理1、map#insert 函数返回值处理2、代码示例一、map 容器迭代器遍历1、map 容器迭代器C++ 语言中 标准模板库 ( STL ) 的 std::map 容器 提供了 begin() 成员函数 和 end() 成员函数 , 这两个函数 都返回一个迭代器 ......
193
0
0
2024-03-10
文章目录一、map 容器插入元素操作 - map#insert 函数1、函数原型简介2、pair 键值对初始化方式二、map 容器 插入 / 修改 元素操作 - map#operator[] 函数三、代码示例 - map 容器插入 / 更新元素1、代码示例2、执行结果一、map 容器插入元素操作 - map#insert 函数1、函数原型简介在 C++ 语言 ......
188
0
0
2024-03-10
文章目录一、查找大于等于指定值的元素 - set#lower_bound 函数1、函数原型2、代码示例二、查找小于等于指定值的元素 - set#upper_bound函数1、函数原型2、代码示例三、查找指定键值范围 - set#equal_range 函数1、函数原型2、代码示例一、查找大于等于指定值的元素 - set#lower_bound 函数1、函数原 ......
186
0
0
2024-03-09
1. 前言在正式分析libunifex之前, 我们需要了解一部分它依赖的基础机制, 方便我们更容易的理解它的实现. 本篇介绍的主要内容是关于c++ linq的, 可能很多读者对c++的linq实现会比较陌生, 但说到C#的linq, 大家可能马上就能对应上了. 没错, c++的linq就是在c++下实现类似C# linq的机制, 本身其实就是在定义一个特殊的 ......
178
0
0
2024-03-09
前言本文亲手操练直播项目,对其中的原理及源码进行解读和剖析。一、直播模型与框架图一个通用的直播模型一般包括三个模块:主播方、 服务器端和播放端。一个描述数字音视频传输和播放流程的简单步骤:录制 -> 编码 -> 网络传输 -> 解码 -> 播放首先是主播方,它是产生视频流的源头,由一系列流程组成:第一,通过一定的设备来采集数据;第二, ......
201
0
0
2024-03-08
一、前言C语言作为一种高效、灵活的编程语言,标准库的使用对于开发人员来说是不可或缺的。其中,stdlib.h是C语言中一个重要的标准库头文件,提供了许多常用的函数和工具,以便开发人员能够更加便捷地进行内存管理、字符串处理、随机数生成等操作。本文将对stdlib.h中的各个函数进行全面介绍,包括它们的功能和使用方法,以帮助开发者更好地理解和利用该标准库。二、s ......
192
0
0
2024-03-07
🔭个人主页: 北 海🛜所属专栏: Linux学习之旅、神奇的网络世界💻操作环境: CentOS 7.6 阿里云远程服务器文章目录🌤️前言🌦️正文TCP网络程序1.字符串回响1.1.核心功能1.2.程序结构服务器1.3.初始化服务器1.4.启动服务器1.4.1.处理连接请求1.4.2.业务处理1.4.3.回调函数1.5.服务器源文件客户端1.6.初始化客户端1 ......
206
0
0
2024-03-07
单链表基本操作的实现导言大家好,很高兴又和大家见面啦!!! 在上一篇中,我们详细介绍了单链表的两种创建方式——头插法与尾插法,相信大家现在对这两种方式都已经掌握了。今天咱们将继续介绍单链表的基本操作——查找、插入与删除。在开始今天的内容之前,我们先通过尾插法创建一个单链表,如下所示://定义单链表数据类型 typedef struct LNode{ i ......
177
0
0
2024-03-06
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍SqlTableModule组件的常用方法及灵活运用。在多数情况下我们需要使用SQL的方法来维护数据库,但此方式相对较为繁琐对于表格等数据的编辑非常不友好,在Qt中提供了QS ......
203
0
0
2024-03-06
线程池实现基于C++可以说是一道经典的计算机本科学生练习题。本篇文章会从一个传统实现的线程池开始讲起。一、线程池和任务我们看一下线程池类的基本结构。线程池本质是有一些线程在后台等待队列执行任务,我们只需要将任务存储在队列中。线程会从任务队列中获取任务执行。这里最基本的成员就是线程队列,任务队列,条件变量用于通知线程组任务事件,队列锁避免竞争,终止条件。cla ......
167
0
0
2024-03-06