C++_ 模板学习三
成员模板、变量模板与模板模板参数 成员模板 普通类和类模板都可以包含成员模板 类模板中的成员模板 同一个 Box<int> 对象可以调用不同的成员模板特化 类外定义成员模板 不同类模板特化之间的转换 默认情况下它们是完全不同的类型: 可以用成员模板实现转换构造 为什么...
成员模板、变量模板与模板模板参数 成员模板 普通类和类模板都可以包含成员模板 类模板中的成员模板 同一个 Box<int> 对象可以调用不同的成员模板特化 类外定义成员模板 不同类模板特化之间的转换 默认情况下它们是完全不同的类型: 可以用成员模板实现转换构造 为什么...
SFINAE、std::enable_if 与C++20 Concepts SFINAE 是什么 模板参数替换失败不算错误 Substitution Failure Is Not An Error 这里不是说整个程序永远不会报错,而是 这个候选模板的替换失败本身不立即报错,编译器...
快速排序 归并排序 整数二分算法 浮点数二分算法 高精度加法 高精度减法 高精度乘低精度 高精度除以低精度 一维前缀和 二维前缀和 一维差分 二维差分 位运算 双指针算法 离散化 区间合并
类型萃取的设计与实现 概述 类型萃取(type traits)可以理解成编译期函数 它们主要通过: 类模板 偏特化 using 类型成员 static constexpr 成员 类型萃取的三种主要形式 类型 输入输出 例子 预测型 trait 类型 → bool is_same、...
单链表 双链表 栈 队列 循环队列 单调栈 单调队列 KMP Trie树 并查集 堆 一般哈希 字符串哈希 STL
惰性实例化与元函数组合 概述 示例 很多人会认为“不选择的分支不会编译”,但实际经常仍然报错 关键规则是 std::conditional 只负责选择已经成功形成的两个类型,不负责阻止模板实参本身被形成 什么是惰性实例化 考虑 仅仅把模板特化当成不完整类型使用,通常不需要实例化其...
树与图的存储 树是一种特殊的图,与图的存储方式相同。 对于无向图中的边ab,存储两条有向边a->b, b->a。 因此我们可以只考虑有向图的存储。 树与图的遍历 拓扑排序 时间复杂度O(n+m),n表示点数,m表示边数 朴素dijkstra算法 时间复杂度O(n*n+...
Typelist——编译期类型容器 概述 普通容器保存运行期对象 Typelist 保存的是一组类型 它没有运行期元素,也不负责构造对象 所有内容都编码在模板参数包中 C++ 标准库没有名为 std::typelist 的类型,但: std::tuple<Ts...>...
搜索当前标签