dl
dl_algorithm.h 文件参考

算法 更多...

#include <algorithm>
#include <cassert>
#include <stack>
#include <array>
#include <vector>
#include <cstdint>
#include "base/dl_concept.h"
#include "base/dl_array.h"

浏览该文件的源代码.

class  dl::finally< F >
 RAII清理操作 更多...
 

命名空间

namespace  dl
 

函数

template<typename T>
constexpr T dl::clamp (const T &x, const T &a, const T &b)
 限制数值到 [a, b]
 
template<typename T>
constexpr T dl::saturate (const T &x)
 限制数值到 [0, 1]
 
template<typename T>
constexpr T dl::is_saturate (const T &x)
 是否数值在[0, 1]
 
template<typename T>
constexpr Array< T, 3 > dl::cross (const Array< T, 3 > &a, const Array< T, 3 > &b)
 向量叉乘
 
template<typename T>
T dl::cast_dynamic (void *p)
 动态类型强转
 
template<typename T, size_t N>
bool dl::limit_bigger (Array< T, N > &a, const Array< T, N > &limit)
 限制到大于某个值,如果修改了原值则返回true
 
template<typename T>
const Tdl::as_const (T &a)
 
template<typename T, typename V>
void dl::erase_head_from_last (T &container, const V &a)
 从容器container中移除 最后 匹配到的a元素 之前(包含a)的所有元素,如果没有匹配到,则什么都不做。
 
template<PopFrontAble C, typename F>
void dl::operate_front (C &container, F func)
 从容器container不断取出第一个元素,执行操作
 
template<typename T>
Tdl::pointer (T &&x)
 查找算法
 
template<typename T>
const Tdl::constant (T &v)
 加上const修饰
 
template<typename C>
auto dl::find_equal (C &container)
 替换容器元素值
 
template<typename T, typename V>
T dl::insert_per_num (const T &container, V v, size_t per_num)
 隔n个元素就插入1个分割符,首尾不会出现分割符
 
template<typename T, typename V>
T dl::r_insert_per_num (const T &container, V v, size_t per_num)
 从后面往前,隔n个元素就插入1个值,首尾不会出现分割符
 
template<typename T, typename V>
void dl::split (const T &container, V delimiter, std::vector< T > &ret)
 以 元素 分割 容器
 
template<typename T, typename V>
void dl::split_no_empty (const T &container, V delimiter, std::vector< T > &ret)
 以 元素 分割 容器
 
template<typename T>
void dl::split_sub (const T &container, const T &delimiter, std::vector< T > &ret)
 以 子串 分割 容器
 
template<typename T, typename V>
void dl::make_sequence (T &c, const std::initializer_list< std::initializer_list< V > > &vec)
 生成序列
 
template<typename C, typename F>
void dl::for_couple (const C &container, F func, bool ring=false)
 成对遍历
 
template<typename C, typename F>
void dl::for_couple_r (const C &container, F func, bool ring=false)
 反向成对遍历
 
template<IsPointer T, typename FC, typename F>
void dl::for_tree (T root, FC func_child, F func)
 遍历树(使用栈,深度优先)
 
template<typename T, size_t N>
constexpr Tdl::arr_last (const T(&arr)[N])
 返回静态数组长度
 
template<IsSigned T>
constexpr T dl::sign (const T &v)
 返回符号,正数返回1、负数返回-1、0返回0
 
template<size_t N>
consteval uint64_t dl::str_uid (const char(&str)[N])
 固定条件的字符串,生成唯一id
 

详细描述

算法

版本
1.0
作者
lveyou
日期
23-06-22
注解
不得包含dl_range.h

在文件 dl_algorithm.h 中定义.