- 博客(25)
- 收藏
- 关注
原创 [remote rejected] master -> master (pre-receive hook declined) error: failed to push sh
除了网上说的分支权限等可能的原因外,还有可能是你的代码库太大了。这时只需向gitee执行一下仓库GC(相当于仓库瘦身)。
2025-01-12 20:36:52
904
原创 C++ Primer第5版-第四章、表达式
sizeof对数组执行时得到的是整个数组所占空间的大小,等价于对数组中所有的元素各执行一次sizeof运算并将结果求和。1、用于基本数据类型之间的转换,例如把uint转成int,int转成double等。后置递增(i++):也会将运算对象+1,求值结果时的运算对象改变之前那个值的副本。取余运算的定律:m%n如果不等于0,则结果的符号与m的符号相同。2、用于类层次结构中,基类与派生类之间的指针或引用的转换。),当对象被用作左值的时候,用的是对象的身份(当一个对象被用作右值的时候,用的是对象的值(
2024-12-02 23:21:56
625
原创 C++ Primer第5版-第三章、字符串、向量和数组
string s1;//s1的内容是cccccc数组中元素个数,在编译的时候一致,要求维度必须是一个常量表达式//错误//正确//正确当数组使用列表初始化时,如果没在结尾处定义空字符的话,不会自动补充。但如果一个char类型的数组使用字符串初始化的话,则会在最后添加表述字符串结束的空字符。不能将数组的内容拷贝给其他数组作为初始值,也不能用数组为其他数组赋值。int a[]={0,1,2} //含有三个整数的数组int a2[]=a;//错误,不允许使用一个数组初始化另一个数组。
2024-12-02 23:20:34
539
原创 C++ Primer第5版-第二章、变量和基本类型
使用{}进行初始化时,如果存在丢失信息的风险,则会出现编译器报错,使用()则不会出现报错,但可能会丢失部分信息。
2024-11-24 23:44:34
474
原创 类的拷贝构造和移动构造以及赋值运算符调用规则
如果一个类实现了拷贝构造函数,那拷贝构造、移动构造、拷贝赋值、移动赋值都可以实现。因为拷贝构造、移动构造都是调用自定义的拷贝构造函数,拷贝赋值、移动赋值都是调用的编辑器默认生成的拷贝赋值运算符。但如果一个类实现了拷贝构造、移动构造函数,那拷贝赋值、移动赋值都不会被允许,因为不会再自动生成拷贝赋值、移动赋值函数。
2024-10-31 23:36:29
194
原创 C++中二进制操作结构bitmap
是 C++ 标准库中的一个模板类,用于表示和操作固定大小的二进制位集合。它提供了一种简洁的方式来处理二进制数据,并允许对位进行高效的读写操作。可以用于多种场景,比如位运算、权限控制、状态标记等。
2024-09-25 20:38:18
316
原创 C++中的关键字
而constexpr主要声明编译时就可以确定值的常量,可以用于数组大小、模板参数等需要在编译期间确定的场景。关键字用于修饰类(class)或虚函数(virtual function),以表示该类或虚函数不能被进一步派生(继承)或被重写(override)。可修改,用来修饰变量,即使在const函数中也能修改该变量得值。用于声明常量,被声明的常量或对象被初始化后其值就不能在被修改。1、const是在运行时计算,constexpr是在编译时计算。如果是函数指针取别名的方式,调用时需要加上括号。
2024-09-25 14:47:07
388
原创 如何判断大小端
小端字节序:低的有效字节存储在低存储器地址。比如int a= 1,int类型为4字节。1的有效字节就是01(主机字节序)大端模式:高的有效字节存储在低的存储器地址(网络字节序)
2024-09-22 00:39:36
353
原创 Boost库在Ubuntu环境下的安装以及cmake包含asio时报错
原因是我在上面的CMakeLists文件中在find_package和target_link_libraries包含了asio,去掉之后直接使用编译通过。在Ubuntu环境下安装boost有命令行安装和源码安装,我采用的是源码安装方式。文件夹(我下载的1.81.0版本)命令解压,下载tar版本使用。
2024-09-15 22:07:19
923
原创 C++中list的splice用法
splice成员函数是std::list特有的一个功能,它允许你将一个list中的一部分或全部元素移动到另一个list中,而不需要复制或移动元素本身,因为std::list的节点是动态分配的,splice仅仅是重新链接这些节点。
2024-09-04 23:17:47
699
原创 锁和信号量的使用场景区别
多个玩家都在完成工会任务,且处理不同玩家完成任务的流程在不同的线程中。但某个玩家完成工会任务要增加工会积分时(公有量,各个玩家共同持有一个工会积分值),需要对工会积分这个共有变量进行上锁处理,避免同一时刻有一个以上的玩家在修改这个值。当某个怪定点刷新时,所有的玩家都在等待怪刷新。当到时间时,刷新信息会唤醒所有的等待线程,将刷新信息下发给所有等待的玩家。比如生产消费者模式:所有的线程都在等待生产者生产。锁适用于对于同一共享资源互斥访问的场景,且这个资源同一时刻只有一个线程能够改变他的值。
2024-08-23 00:16:44
293
原创 C++拷贝构造函数传入参数为什么是const引用
如果是值传递,传入时会调用类的拷贝构造函数,拷贝构造函数是值传递,则会重复递归调用拷贝构造函数。:防止传入的源对象数据被修改。
2024-08-21 08:42:05
240
原创 宏定义时为什么建议使用do{}while(0)
使用结构可以确保宏展开的结果是一个完整的语句,即使在宏被用作更大的表达式的一部分时也是如此。这有助于避免意外的行为,并使得宏的使用更加安全和易于理解。
2024-08-20 00:49:30
484
原创 阻塞、非阻塞、同步、异步之间的关系与区别
模式描述特点同步阻塞调用等待结果返回,期间被阻塞调用者必须等待,无法执行其他任务同步非阻塞调用立即返回状态,调用者需轮询结果调用者不会被阻塞,但需主动检查状态异步阻塞(矛盾)异步操作前的等待阶段可能被阻塞等待阶段堵塞,操作开始后非阻塞异步非阻塞调用后立即返回,操作完成后异步通知调用者完全不会被阻塞,通过通知处理结果。
2024-08-18 11:24:10
413
原创 std::shared_from_this()使用方法
其中T是自己类的类型。继承后,自己写的类中就可以调用。管理的情况下被安全地调用。将导致未定义行为(通常是抛出。异常,但实际上这取决于实现)。会与已经存在的其他指向该对象的。来获取一个指向自身的。只能在对象已经被一个。时,自己书写的类要继承。使用时需要注意的是,
2024-08-12 00:22:12
715
原创 Boost库回声服务器示例
boost库最重要的是io_context(原io_service),该类的角色是代码与操作系统的媒介,当代码中需要发送数据时,是通过这个类交给底层操作系统来完成的。基于此,大多数asio库中有基于I/O需求的类都需要传入这个参数,例如套接字socket类和负责客户端连接的accept类。同时,这个类不允许拷贝操作,因此该类作为函数参数传递时要注意传引用。
2024-08-11 21:48:37
433
原创 十大排序算法(C++方法实现)
从最后一个非叶子节点开始向上进行堆化原因是叶子节点自然满足堆的性质,而非叶子节点可能不满足堆的性质。而之后从根节点开始堆化的原因是,除了根节点外,其余节点都满足堆的性质,且在交换之前,根节点下面的两个节点是除根节点之外的最大节点,因此在交换之后,只需要对根节点进行堆化,将其调整满足堆的性质即可。
2024-08-02 20:20:01
2017
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅