
C++标准模板库编程实战_智能指针
模板 模板是一组函数或类的参数实现。 编译器能够在需要使用函数或类模板时,用模板生成一个具体的函数或者类的定义。 也可以定义参数化类型的模板,因此模板并不是可执行代码,而是用于生成代码的蓝图或配方 因此一个从来没有被使用过的模板,它会被编译器忽略,不会生成可执行代码。 也就是说,...
模板 模板是一组函数或类的参数实现。 编译器能够在需要使用函数或类模板时,用模板生成一个具体的函数或者类的定义。 也可以定义参数化类型的模板,因此模板并不是可执行代码,而是用于生成代码的蓝图或配方 因此一个从来没有被使用过的模板,它会被编译器忽略,不会生成可执行代码。 也就是说,...
语言特性 概念Concepts 概述 概念用于约束模板参数,提供了一种简洁的方式来指定模板参数的要求 约束模板参数,增强代码可读性和错误提示 示例 示例1 示例2 范围库(Ranges) 概述 提供声明式数据操作,支持惰性求值和链式调用 示例 过滤偶数并平方 协程(Corouti...
等待事件或其他条件 如果一个线程正等待着第二个线程完成一项任务,它有几个选择。 可以一直检测共享数据(由互斥量保护)中的标识,并且让第二个线程在完成任务时设置该标识。 浪费资源 使用std::this_thread::sleep_for(),让等待的线程在检查之间休眠一会儿 得到...
理解 protobuf允许不同编程语言的程序员 以自己熟悉的方式在.proto文件里定义消息结构 然后protobuf的引擎把这个.proto文件里描述的消息结构进行解析,最后生成对应语言的代码,这些代码里描述了之前定义的消息结构 然后在项目中,需要用到这些消息结构的模块,只需引...
接收器 接收器是实际将日志写入其目标的对象 每个接收器应该只负责单个目标(例如文件、控制台、数据库) 并且每个接收器都有自己的格式化程序对象的私有实例 spdlog的接收器有_mt(多线程)或_st(单线程)后缀来指示线程安全 旋转接收器 当达到最大文件大小时,关闭文件,重命名它...
变量的读取 概述 一般来说,读取一个变量的内容,是从内存里面去取的 但是,在编译时启用优化选项后,编译器可能会对代码进行优化,以提高执行效率 优化手段-寄存器 一个常见的优化手段就是将一些频繁访问的变量存储在CPU寄存器中,而不是每次都从内存中读取 这种优化可以大幅度提升程序的性...
导读 explicit 将构造函数声明为explicit,禁止编译器执行非预期(不是我们想要的)的类型转换。 除非我们有一个很好的理由,允许构造函数被用来进行隐式类型转换,否则我们应该把它声明为explicit的。 拷贝构造函数&&拷贝赋值操作符 拷贝构造函数被用...
SetMsgHandled 当用户在自己的消息映射表中增加一个消息处理函数,而且是插入在映射表的CHAIN_MSG_MAP(SHostWnd)前(也应该在此之前,否则很可能就收不到消息)。 默认情况下会自动标志该消息已经被处理了,如此一来就不会继续交给SHostWnd处理。 解决...
概述 zlib库是一个广泛使用的压缩/解压缩库 下面实现是用了zlib 1.3版本的代码和相关库 具体是使用了zlib源码中带的minizip 其中的minizip扩展提供了处理ZIP文件的功能 解压 在解压之前可能需要处理其他的很多工作,比如验证目录,验证目标文件是否存在等。这...
引用折叠 概述 引用折叠(Reference Collapsing)是C++11引入的机制,用于处理模板编程中多重引用组合的类型推导问题 当间接生成“引用的引用”(如通过模板参数推导、类型别名等)时,编译器会根据规则将其折叠为单一引用类型 它的核心目的是支持完美转发(Perfec...
搜索当前标签