备忘表
优质
小牛编辑
130浏览
2023-12-01
备注
- 大多数算法同时处理类型和值(参见类型计算)
- 算法通常返回一个新容器作为它们的返回结果;不会更改原容器(参见算法)
- 所有的算法都是
constexpr
函数对象
容器 | 说明 |
---|---|
tuple | 固定长度的基于索引的泛型异构序列,可将它视为异构对象中的std::vector |
optional | 表示可选值,即可以为空的值。它有点像std::optional ,除了空值也是编译时已知的外 |
map | 无序关联数组映射(唯一)编译期实体到任意对象。好比异构对象的std::unordered_map |
set | 无序容器,包含必须是编译期实体的唯一键。好比异构对象的std::unordered_set |
range | 表示编译期的数值范围,好比更好的std::integer_sequence |
pair | 持有两种异构对象的容器。好比std::pair ,但压缩空类型的存储 |
string | 编译期字符串 |
type | 表示一个C++类型的容器。是类型与值相统一的根本所在。比MPL式的计算更有趣,参见类型计算 |
integral_constant | 表示编译期数值。非常类似于std::integral_constant ,不同之处在于hana::integral_constant 还定义了一些操作和语法糖 |
lazy | 封装一个惰性值或计算 |
basic_tuple | 简装版hana::tuple 。不符合标准,但更有编译时效率 |
函数 | 说明 |
---|---|
adjust(sequence,value,f) | 将函数应用到序列的每个元素上,将值与元素比较,返回调整后的序列 |
adjust_if(sequence,predicate,f) | 将函数应用到序列的每个元素上,调整满足谓词的每个元素,返回调整后的序号 |
{all,any,none}(sequence) | 返回是否 所有/任意/无 序列的元素都是真值 |
{all,any,none}(sequence) | 返回是否 所有/任意/无 序列的元素满足谓词 |
append(sequence,value) | 附加元素到序列 |
at(sequence,index) | 返回序列第n 个元素,index 必须是一个IntegralConstant |
back(sequence) | 返回非空序列的最后一个元素 |
concat(sequence1,sequence2) | 合并两个序列 |
contains(sequence,value) | 序列中是否包含给定的值 |
count(sequence,value) | 序列中给定值的数量 |
count_if(sequence,predicate) | 序列中给定符合谓词条件的元素的数量 |
drop_front(sequence[,n]) | 从序列中删除前n 个元素,若length(sequence)<=n ,则删除整个序列。n 必须是IntegralConstant ,未提供n 时,默认为1 |
drop_front_exactly(sequence[,n]) | 从序列中删除前n 个元素,n 必须是IntegralConstant 而且序列中至少要有n 个元素,未提供n 时,默认为1 |
drop_back(sequence[,n]) | 从序列结尾删除n 个元素,若length(sequence)<=n ,则删除整个序列。n 必须是IntegralConstant ,未提供n 时,默认为1 |
drop_while(sequence,predicate) | 从序列删除满足谓词的元素。谓词必须返回一个IntegralConstant |
fill(sequence,value) | 用value 重置序列中的所有元素 |
filter(sequence,predicate) | 移除序列中所有不满足谓词的元素,谓词必须返回一个IntegralConstant |
find(sequence,value) | 查找序列中第一个与value 相等的元素,并返回just 或nothing ,参见hana::optional |
find_if(sequence,predicate) | 查找序列中第一个与满足谓词的元素,并返回just 或nothing ,参见hana::optional |
flatten(sequence) | 连接序列,类似于std::tuple_cat |
fold_left(sequence[,state],f) | 从左侧累积序列的元素,可选地使用提供的初始状态 |
fold_right(sequence[,state],f) | 从右侧累积序列的元素,可选地使用提供的初始状态 |
fold(sequence[,state],f) | 相当于fold_left ,与Boost.MPL 和Boost.Fusion 保持一致 |
for_each(sequence,f) | 在序列的每个元素上调用f 函数。返回void |
front(sequence) | 返回非空序列的第一个元素 |
group(sequence[,predicate]) | 将所有满足(或全部不满足)谓词的序列的相邻元素组。 谓词默认为相等,在这种情况下,元素必须是Comparable (可比性)的 |
insert(sequence,index,element) | 在指定索引处插入元素,index 必须是IntegralConstant |
insert_range(sequence,index,elements) | 在指定索引处插入多个元素,index 必须是IntegralConstant |
is_empty(sequence) | 序列是否为空,返回值作为IntegralConstant |
length(sequence) | 序列的长度,返回值作为IntegralConstant |
lexicographical_compare( sequence1,sequence2[,predicate]) | 执行两个序列的词典比较,可选地使用自定义谓词,默认情况下使用hana::less |
maximum(sequence[,predicate]) | 返回序列的最大元素,可选地根据谓词。 如果没有提供谓词,那么元素必须是Orderable (可排序)的 |
minimum(sequence[,predicate]) | 返回序列的最小元素,可选地根据谓词。 如果没有提供谓词,那么元素必须是Orderable (可排序)的 |
partition(sequence,predicate) | 将序列分成满足和不满足谓词的元素对 |
prepend(sequence,value) | 将元素预置到序列 |
remove(sequence,value) | 移除所有与value 相等的元素 |
remove_at(sequence,index) | 移除给定索引处的元素,index 必须是IntegralConstant |
remove_if(sequence,predicate) | 移除所有满足谓词的元素,谓词必须返回IntegralConstant |
remove_range(sequence,from,to) | 移除半开区间[from,to)的元素,这些索引必须都是IntegralConstant |
replace(sequence,oldval,newval) | 将序列中所有元素与oldval 相等的值替换为newval |
replace_if(sequence,predicate,newval) | 用newval 替换序列中满足某些谓词的元素。 |
reverse(sequence) | 逆序排列 |
reverse_fold(sequence[,state],f) | 相当于fold_right 。为与Boost.MPL 和Boost.Fusion 保持一致。 |
size(sequence) | 相当于length ,为与C++标准库 保持一致。 |
slice(sequence,indices) | 返回包含原始序列的给定索引处的元素的新序列。 |
slice_c<from,to>(sequence) | 返回包含原始序列的半开区间[from,to) 中包含的索引处的元素的新序列。 |
sort(sequence[,predicate]) | 可选地根据谓词对序列的元素进行(稳定)排序。 如果没有提供谓词,那么元素必须是可排序的。 |
take_back(sequence,number) | 取序列的最后n 个元素,如果length(sequence)<= n ,则取整个序列。 n 必须是IntegralConstant 。 |
take_front(sequence,number) | 取序列的前n 个元素,如果length(sequence)<= n ,则取整个序列。 n 必须是IntegralConstant 。 |
take_while(sequence,predicate) | 当一些谓词满足时,获取序列的元素,并返回。 |
transform(sequence,f) | 对序列的每个元素应用函数并返回结果。 |
unique(sequence[,predicate]) | 从序列中删除所有连续的重复项.谓词默认为相等,在这种情况下,元素必须是Comparable (可比较的). |
unpack(sequence,f) | 用序列的内容调用f ,等价于f(x1,...,xN) |
zip(s1,...,sN) | 将N 个序列压缩成元组序列。所有序列必须具有相同的长度。 |
zip_shortest(s1,...,sN) | 将N 个序列压缩成元组序列。 返回的序列具有最短输入序列的长度。 |
zip_with(f,s1,...,sN) | 用N元函数压缩N 个序列。所有序列必须具有相同的长度。 |
zip_shortest_with(f,s1,...,sN) | 用N 元函数压缩N 个序列。返回的序列具有最短输入序列的长度。 |