
C++17_第二篇
静态断言 相关介绍: 预处理宏assert()在标准库头文件cassert中定义。 它可以在程序中测试逻辑表达式。 只要条件(表达式)是false,assert()宏就会调用std::abort(),终止程序。 另外assert()会在标准错误流cerr中显示结果。 静态断言 静...
静态断言 相关介绍: 预处理宏assert()在标准库头文件cassert中定义。 它可以在程序中测试逻辑表达式。 只要条件(表达式)是false,assert()宏就会调用std::abort(),终止程序。 另外assert()会在标准错误流cerr中显示结果。 静态断言 静...
变量的读取 概述 一般来说,读取一个变量的内容,是从内存里面去取的 但是,在编译时启用优化选项后,编译器可能会对代码进行优化,以提高执行效率 优化手段-寄存器 一个常见的优化手段就是将一些频繁访问的变量存储在CPU寄存器中,而不是每次都从内存中读取 这种优化可以大幅度提升程序的性...
概述 简述 在关联容器中,对象的位置取决于和它关联的键的值 键可以是基本类型,也可以是类类型 map map容器的元素是pair<const K,T>类型的对象,这种对象封装了一个T类型的对象和一个与其关联的K类型的键 不允许有重复的键,可以保存重复的对象 容器中的元...
概述 vector是单向开口的连续线性空间,而deque则是一种双向开口的连续线性空间。 所谓双向开口,是指可以在头尾两端分别做元素的插入和删除操作。 区别 和vector相比: deque运行常数时间内对起头端进行元素的插入和移除操作 deque没有所谓的容量的概念,因为他是动...
运算符 符号 非成员 二元算术运算符 + - * / % 是 一元算术运算符 + - 是 按位运算符 ~ & | ^ << >> 是 逻辑运算符 ! && || 是 赋值运算符 = 否 复合赋值运算符 += -= *= /= %= ...
等待事件或其他条件 如果一个线程正等待着第二个线程完成一项任务,它有几个选择。 可以一直检测共享数据(由互斥量保护)中的标识,并且让第二个线程在完成任务时设置该标识。 浪费资源 使用std::this_thread::sleep_for(),让等待的线程在检查之间休眠一会儿 得到...
模板 模板是一组函数或类的参数实现。 编译器能够在需要使用函数或类模板时,用模板生成一个具体的函数或者类的定义。 也可以定义参数化类型的模板,因此模板并不是可执行代码,而是用于生成代码的蓝图或配方 因此一个从来没有被使用过的模板,它会被编译器忽略,不会生成可执行代码。 也就是说,...
WTL下载 WTL WTL 基础概念 定位与优势 基于 ATL 的扩展库,专注于高效 Win32 GUI 开发,无 MFC 的臃肿 优势 模板驱动:零成本抽象,代码体积小 兼容 Win32 API:直接操作窗口句柄,灵活性高。 现代 C++ 风格:支持 RAII、模板元编程 WT...
概述 如果我们在线程间共享数据,我们需要设置规则,哪个线程可以访问数据的哪一位,什么时间以及如何将更改传达给关心数据的其他线程。 关键点 问题 从整体上来看,所以线程之间共享数据的问题,都是修改数据导致的。如果所有的共享数据都只读的,就没有问题,因为一个线程所读取的数据不受另一个...
使用介绍 默认的 创建一个多线程日志记录器 创建的日志记录器是多线程的,这意味着它可以被多个线程同时使用,而不会发生竞争条件或数据损坏 用于创建多线程的循环日志记录器 循环日志记录器是指在达到指定大小后,会自动循环覆盖旧的日志文件并创建新的日志文件来存储日志消息 循环日志记录器还...
搜索当前标签