随笔分类 -  C/C++

摘要:浮点数不是完美精确的表示,尤其是在涉及到舍入误差和不同数值规模时。 一般实现: fabs(a - b) < epsilon 这种通过比较差的绝对值来判断浮点数是否相等的方法,存在一些潜在的问题: 误差累积:在连续的浮点数运算中,误差可能会逐步累积。这会导致最后的结果偏离真实值,这样用差值来比较就可能 阅读全文
posted @ 2024-03-20 18:27 天下太平 阅读(58) 评论(0) 推荐(0) 编辑
摘要:源码 #pragma once #include <list> #include <unordered_map> using namespace std; class LRUCache { public: LRUCache(int capacity) : cap(capacity) { m.rese 阅读全文
posted @ 2023-11-10 18:30 天下太平 阅读(57) 评论(0) 推荐(0) 编辑
摘要:https://www.cnblogs.com/pandamohist/p/13852197.html 互斥量 std::mutex:解决多个线程对共享数据的访问问题。 条件变量 std::condition_variable:是一种线程间的通讯机制,解决线程的执行问题。 #pragma once 阅读全文
posted @ 2023-03-02 10:28 天下太平 阅读(56) 评论(0) 推荐(0) 编辑
摘要:使用汇编代码,不引入libc库。 代码: // no_main.c char str[] = "Hello world!\n"; void my_print() { asm( "movl 13,0,%%ebx \n\t 阅读全文
posted @ 2022-12-02 14:47 天下太平 阅读(36) 评论(0) 推荐(0) 编辑
摘要:| | 语法 | 优势 | 劣势 | | | | | | | 静态编译 | gcc -static main.c -o main_static | 1. 符号冲突编译器可以发现2. 程序启动和运行速度略快3. 没有版本兼容问题 | 1. 更新子模块需要重新编译主程序2. 程序体积较大(磁盘上和内存中 阅读全文
posted @ 2022-12-02 14:06 天下太平 阅读(35) 评论(0) 推荐(0) 编辑
摘要:用法:const_cast(expression) 通过const_cast运算符,只能将const type转换为type,将const type&转换为type&。 例子1: void f(int *p){} int main() { const int a=1; const int* cons 阅读全文
posted @ 2022-09-13 10:26 天下太平 阅读(191) 评论(0) 推荐(0) 编辑
摘要:string类有2个函数获取字符串的长度。length、size。长度不包括'\0'。 这两个函数都是的实现是相同的,没有任何区别。 length是按照c语言的方式最开始就引入了。 size是STL引入的,保证容器类获取元素个数的接口统一。 建议:业务上层用length,STL内部使用size。 阅读全文
posted @ 2022-07-26 19:21 天下太平 阅读(891) 评论(0) 推荐(0) 编辑
摘要:int i = 0; 00071ABE mov dword ptr [i],0 ++i; 00071AC5 mov eax,dword ptr [i] 00071AC8 add eax,1 00071ACB mov dword ptr [i],eax i++; 00071ACE mov eax,dw 阅读全文
posted @ 2022-07-01 14:33 天下太平 阅读(85) 评论(0) 推荐(0) 编辑
摘要:锁的本质:操作的序列化、队列化 虽然不同的语言可能会提供不同的锁接口,但是底层调用的都是操作系统的提供的锁。 不同的高级语言只是在操作系统的锁机制基础上进行了些封装而已 硬件 原子操作是指不可被中断的一个或者一组操作。 硬件提供原子指令,支持基本类型。 总线锁 在cpu芯片上有一个HLOCK Pin 阅读全文
posted @ 2022-05-18 17:41 天下太平 阅读(268) 评论(0) 推荐(1) 编辑
摘要:使用位运算的注意事项: 位操作只能用于整形数据,对float和double类型进行位操作编译器会报错。 位操作符的运算优先级比较低,尽量使用括号来确保运算顺序。 注意:一般运算不一定比位运算慢。编译器已经做的很好了,会把一般运算优化为位运算。 某些自作聪明的优化反而会误导编译器,使得编译器不进行更棒 阅读全文
posted @ 2022-05-17 18:31 天下太平 阅读(68) 评论(0) 推荐(0) 编辑
摘要:查表法 unsigned char reverse8(unsigned char c) { static unsigned char sta[16] = {//不多不少的静态数据 0x00,0x08,0x04,0x0C,0x02,0x0A,0x06,0x0E,0x01,0x09,0x05,0x0D, 阅读全文
posted @ 2022-05-16 16:03 天下太平 阅读(27) 评论(0) 推荐(0) 编辑
摘要:直接看源码:endl是一个模板函数,接收一个ostream输出流参数。 endl:换行+刷新缓冲区。把缓冲区数据写入 ends:空字符(’\0’)标记结束。不同的操作系统对’\0’处理的方式也不同,有的输出一个空格,有的什么都没有。 flush:刷新缓冲区 template <class _Elem 阅读全文
posted @ 2022-05-11 11:11 天下太平 阅读(118) 评论(0) 推荐(0) 编辑
摘要:C++11新加了两个关键字:auto和decltype。 用于在编译期推导出变量或表达式的类型,方便开发者简化代码。 auto 编译期推导变量类型。 例:auto x = 1; 推导规则 必须初始化。 在一行定义多个变量时,不能有二义性。 无法推导出模板参数。 不能定义数组 不能用于函数参数 cv推 阅读全文
posted @ 2022-05-10 14:27 天下太平 阅读(103) 评论(0) 推荐(0) 编辑
摘要:需求:禁止基类指针指向子类 方法:将继承方式改为protected、private 原因:对象只能访问类的public权限的成员 阅读全文
posted @ 2022-05-09 14:46 天下太平 阅读(29) 评论(0) 推荐(0) 编辑
摘要:做单元测试的时候,为了验证类的私有方法或变量,需要将访问权限都改为public。 为了不改动源代码,可以在编译时,添加宏定义替换权限 CPPFLAGS=-Dprotected=public -Dprivate=public 绝大部分情况下是不会出现问题的。 注意到C++的默认规则,默认权限是priv 阅读全文
posted @ 2022-05-09 13:41 天下太平 阅读(218) 评论(0) 推荐(0) 编辑
摘要:call_once是c++11中引入的新特性,用于保证某个函数只调用一次,即使是多线程环境下,它也可以可靠地完成一次函数调用。一般配合once_flag变量。 特别适用于多线程时某个初始化只执行一次的场景。 若调用call_once一切顺利,将会翻转once_flag变量的内部状态,再次调用该函数时 阅读全文
posted @ 2022-05-06 10:40 天下太平 阅读(175) 评论(0) 推荐(0) 编辑
摘要:noexcept关键字是c++11之后新增的。 该关键字会告诉编译器,被修饰的函数不会发生异常,有利于编译器对程序做更多的优化。 编译器做代码生成时,胡加一些额外的代码包裹原始代码,当出现异常时可以抛出一些相关的堆栈错误信息,包含:错误位置、错误原因、调用顺序和层级路径等信息。 当使用noexcep 阅读全文
posted @ 2022-05-06 10:22 天下太平 阅读(301) 评论(0) 推荐(0) 编辑
摘要:C++11新增的关键字thread_local,表示对象的生命周期属于线程存储期。 线程局部存储(Thread Local Storage,TLS)是一种存储期(storage duration),对象的存储是在线程开始时分配,线程结束时回收,每个线程有该对象自己的实例 如果类的成员函数内定义了 t 阅读全文
posted @ 2022-05-05 16:54 天下太平 阅读(264) 评论(0) 推荐(0) 编辑
摘要:分派/派发 dispatch 变量被声明时的类型叫做变量的静态类型(Static Type)。 变量所引用的对象的真实类型又叫做变量的实际类型(Actual Type)。 根据对象的类型而对方法进行的选择,就是分派(Dispatch)。 分派时期 根据分派生的时期,可以将分派分为两种,静态分派和动态 阅读全文
posted @ 2022-05-05 14:00 天下太平 阅读(154) 评论(0) 推荐(0) 编辑
摘要:只能在堆上分配 class A { public: A() {} void destory() { delete this; } private: ~A() {} }; 编译器在为类对象分配栈空间时,会先检查类的析构函数的访问性,其实不光是析构函数,只要是非静态的函数,编译器都会进行检查。 若是类的 阅读全文
posted @ 2022-04-27 15:12 天下太平 阅读(170) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示