C++基准测试
C++ 的可视化基准测试 1.利用工具: chrome://tracing (Chrome 浏览器自带的一个工具,将该网址输入即可) 2.基本原理: cpp 的计时器配合自制简易 json 配置写出类,将时间分析结果写入一个 json 文件,用 chrome://tracing 这个工具进行可视化 。
C++ 的可视化基准测试 1.利用工具: chrome://tracing (Chrome 浏览器自带的一个工具,将该网址输入即可) 2.基本原理: cpp 的计时器配合自制简易 json 配置写出类,将时间分析结果写入一个 json 文件,用 chrome://tracing 这个工具进行可视化 。
C++ 内存模型 C++ 程序在执行时,将内存大方向划分为4 个区域 代码区:存放函数体的二进制代码,由操作系统进行管理的 全局区:存放全局变量和静态变量以及常量 栈区:由编译器自动分配释放,存放函数的参数值,局部变量等 堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收 C/C++ 内存布局 程序运行前 在程序编译后,生成了可执行程序,未...
C++ 左值、右值和右值引用 在 C++ 中,左值(lvalue)、右值(rvalue)和右值引用(rvalue reference)是与对象存储、对象身份及其可移动性相关的三个概念。 Lvalue 左值是表达式的结果,它指向一个明确的内存位置,可能是变量、数组的一个元素或者一个对象的引用。左值的特点是它们可以持续存在超出单个表达式的生命周期。你可以将左值看作是一个可以被赋值的实体。例...
STL 常用算法 算法主要是由头文件 <algorithm> <functional> <numeric> 组成。 <algorithm> 是所有 STL 头文件中最大的一个,范围涉及到比较、 交换、查找、遍历操作、复制、修改等等 <numeric> 体积很小,只包括几个在序列上面进行简单数学运算的模板函数 &l...
C++ 容器 STL容器就是将运用最广泛的一些数据结构实现出来 常用的数据结构:数组、链表、树、栈、队列、集合和映射表等 这些容器分为序列式容器和关联式容器两种: 序列式容器: 强调值的排序,序列式容器中的每个元素均有固定的位置 关联式容器: 二叉树结构,各元素之间没有严格的物理上的顺序关系 序列式容器/顺序容器 Sequential Containers 序列式容器...
C++ 模板 (template) C++ 模板概述 模板允许你定义一个可以根据你的用途进行编译的模板。模板是泛型编程的基础,类似于 Java 中的泛型。 模板只有在被调用的时候才会创建,编译时不会被创建,如果模板代码有错误,编译不会出错,但运行会出错 模板不应该被滥用,滥用了会导致可读性太差,有的团队禁止用模板 C++ 提供两种模板机制:函数模板 和 类模板 函数模...
C++ 继承 继承概念 当你创建了一个子类,它会包含父类的一切 派生类是通过对基类进行修改和扩充得到的,在派生类中,可以扩充新的成员变量和成员函数。 派生类拥有基类的全部成员函数和成员变量,不论是 private、protected、public;需要注意的是:在派生类的各个成员函数中,不能访问基类的 private 成员。 继承的格式: class 派生类名:pub...
C++ 枚举 C++ 枚举 枚举量的声明 enum 是 enumeration 的缩写。基本上它就是一个数值集合。不管怎么说,这里面的数值只能是整数。 定义枚举类型的主要目的:增加程序的可读性 枚举变量的名字一般以大写字母开头(非必需) 默认情况下,编译器设置第一个枚举变量值为 0,下一个为 1,以此类推(也可以手动给每个枚举量赋值),且 未被初始化的枚举值的值默认将...
C++ 异常 C++ 异常 throw 抛出异常 try{}catch() 捕获异常 可以抛出任何对象 void test1() { throw "测试!"; } void test2() { throw exception("测试"); } try { test1(); } catch (const char *m) { cout << m &...
C++ 单例模式 Singleton 只允许被实例化一次,用于组织一系列全局的函数或者变量,与 namespace 很像。例子:随机数产生的类、渲染器类。 C++ 中的单例只是一种组织一堆全局变量和静态函数的方法 C++ 实现单例的基本方法: 将构造函数设为私有,因为单例类不能有第二个实例 提供一个静态访问该类的方法:设一个私有的静态的实例,...