START位域在C++中,位域(bit fields)是一种特殊的数据结构,允许将结构体或类的成员变量按位进行分配。通过位域,可以有效地利用内存,节省存储空间,特别适用于表示布尔类型、标志位或其他不需要完整字节的数据。位域的语法格式如下:struct MyStruct
{
dataType memberName : numBits;
};
......
170
0
0
2024-02-11
STARTvolatile在C++中,volatile是一个关键字,用于修饰变量,告诉编译器该变量的值可能在程序流程之外被意外修改,因此编译器不应该对该变量进行优化(如缓存变量值或重排指令顺序)。volatile主要用于以下场景:1、多线程访问共享变量:在多线程编程中,如果一个变量被多个线程访问,并且其中一个线程可能会修改该变量的值,就应该使用volatil
......
179
0
0
2024-02-11
START温故而知新Hello,大家好!我是木荣。温故而知新,可以为师矣。作为一名攻城狮,扎实的基本功是解决问题及完成工作中任务的重要前提。没有良好的基本功作为铺垫,一味的追求知识的宽度是毫无意义,知其然更要知其所以然。因此,在平时和小伙伴们聊天时,在谈到学习技术方面的问题,我会告诉他们注重基本功。所以,最近文章会总结一些日常编程工作中常用的重要基本知识点,
......
200
0
0
2024-02-11
最近招商银行的 24 届秋招已经开始了,有很多同学问我 C++ 能投银行吗?银行的技术大多数都是 Java,但是我看银行后端开发和测开岗位的要求:熟悉Java/C++中至少一门编程语言。所以,C++同学也是可以投银行开发的。今天分享,一位c++同学面招商银行测开岗位的面经,共问了 20+ 个问题,测开问的问题其实跟后端开发差不多,还是编程语言+数据库+计算机
......
196
0
0
2024-01-19
一、什么是容器?所谓容器,就是可以承载,包含元素的一个器件,它是STL六大组件之一,是容器、算法、迭代器中最重要也是最核心的一部分。二、STL中各大容器的结构与分类2.1 顺序性容器2.1.1 什么是顺序性容器?顺序性容器就是将一组具有相同类型的元素以严格的线性形式组织起来2.1.2 有哪些顺序性容器?这里给大家整理成了一个表格的形式,如下表所示🐶容器简介说
......
205
0
0
2024-01-19
为什么要用内存池为什么要用内存池?首先,在7 * 24h的服务器中如果不使用内存池,而使用malloc和free,那么就非常容易产生内存碎片,早晚都会申请内存失败;并且在比较复杂的代码或者继承的屎山中,非常容易出现内存泄漏导致mmo的问题。为了解决这两个问题,内存池就应运而生了。内存池预先分配一大块内存来做一个内存池,业务中的内存分配和释放都由这个内存池来管
......
221
0
0
2024-01-19
你好,我是雨乐!最近在升级系统和进行一些性能优化,业余时间也看一些技术书籍和视频,看了下上次更新文章的时间,大致在一个月前了,确实有点久了,所以赶紧拾起来,不能让大伙忘了我不是😁。今天,聊聊在升级过程中的一个比较重要的优化点-编译期优化。概述说明符constexpr是自C++11引入,我相信很多人跟我一样,在第一次接触这个的时候,会很容易和const混淆。从
......
205
0
0
2024-01-18
1. 单向链表和forward_list上一章我们介绍了双向链表和C++容器库中提供的std::list容器,与之对应的就是单向链表,顾名思义,单向链表只记录下一个元素的位置,只能朝一个方向遍历元素。C++11从开始提供了std::forward_list(前向列表)来实现单向链表。std::forward_list在插入、删除和移动操作(例如排序)中比其他
......
189
0
0
2024-01-12
1. 链表和std::list链表是一种在物理上非连续、非顺序的数据结构,数据元素的逻辑顺序是通过链表中的指针链接实现,其由若干节点所组成。std::list是C++中支持常数时间从容器任何位置插入和移除元素的容器,但其不支持快速的随机访问,其通常实现为双向链表。由于链表的存储方式并不是连续的内存空间,因此链表list中的迭代器只支持前移和后移,属于双向迭代
......
210
0
0
2024-01-12
1. std::vectorstd::vector是C++的默认动态数组,其与array最大的区别在于vector的数组是动态的,即其大小可以在运行时更改。std::vector是封装动态数组的顺序容器,且该容器中元素的存取是连续的。vector的存储是自动管理,不需要人为操作自动实现按需扩张收缩。但实现自动管理的代价就是:vector通常占用多于静态数组的
......
182
0
0
2024-01-12
1. 数组和std::arraystd::array是C++容器库提供的一个固定大小数组的容器。其与内置的数组相比,是一种更安全、更容易使用的数组类型。std::array在头文件<array>中定义,其声明如下:template<
class T,
std::size_t N
> struct array; /
......
215
0
0
2024-01-12
1. 双端队列和std::duque双端队列实际上是队列的一种变形,队列要求只能在队尾添加元素,在队头删除元素,而双端队列在队头和队尾都可以进行添加和删除元素的操作。双端队列是限定插入和删除操作在表的两端进行的线性表。C++中提供deque容器来实现双端队列的功能。std::duque(double-venden queue, 双端队列)是C++容器库里中有
......
200
0
0
2024-01-12
一,基础概念数据报文在网络中的点对点传输方式通常有以下三种:单播(Unicast): 数据报文从一个发送端到一个接收端的通信方式。组播(Multicast): 数据报文从一个发送端到多个接收端的通信方式。广播(broadcast): 数据报文从一个发送端到所有接收端的通信方式。组播的实现需要设置组播地址在IPv4中组播的地址范围是:224.0.0.0到239
......
308
0
0
2024-01-10
一,可变参数1.基础概念可变参数在C语言和C++语言编程中都有应用。可变参数的含义是:在函数传参的时候,参数的数量、类型都是可变的,不确定的。在C语言中,应用到可变参数的是可变参数函数和可变参数的宏。在C++语言中,C++11标准提供了两种使用可变参数的方式:1.如果可变参数的参数类型相同,可以使用标准库中的initializer_list。2.如果可变参数
......
197
0
0
2024-01-10
一,函数模板1.基础概念模板编程是C++中泛型编程的基础。一个模板可以是创建类或者函数的蓝图。模板编程分两种,分别是算法抽象的模板、数据抽象的模板。算法抽象的模板以函数模板为主,数据抽象的模板以类模板为主。基于函数模板生成的函数定义被称为模板的一个实例。模板的定义以关键字template开始,后跟一个由尖括号"<>"括起来的模板参数列表。2.函数
......
200
0
0
2024-01-10