ELC in dev
ELC-lang
载入中...
搜索中...
未找到
elc::defs::base::range_n::match_pattern< T > 模板结构体 参考

sunday算法表头,用以实施头起始的快速子串匹配算法 大部分情况下应当编译时预构建或对运行时生成的实例进行缓存 更多...

Public 类型

typedef unsigned char index_type
 

Public 成员函数

constexpr void build_table (const array_like_view_t< T > &pattern) noexcept
 
constexpr match_pattern (const array_like_view_t< T > &pattern) noexcept
 
constexpr T * match (const array_like_view_t< T > &range) const noexcept
 

静态 Public 成员函数

static constexpr index_type get_index_of (T &ch) noexcept
 

Public 属性

array_like_view_t< T > _pattern
 
size_t skip_table [number_of_possible_values_per< index_type >] {}
 

详细描述

template<typename T>
struct elc::defs::base::range_n::match_pattern< T >

sunday算法表头,用以实施头起始的快速子串匹配算法 大部分情况下应当编译时预构建或对运行时生成的实例进行缓存

在文件 all_defs.cpp11195 行定义.

成员类型定义说明

◆ index_type

在文件 all_defs.cpp11197 行定义.

构造及析构函数说明

◆ match_pattern()

template<typename T >
constexpr elc::defs::base::range_n::match_pattern< T >::match_pattern ( const array_like_view_t< T > &  pattern)
inlineconstexprnoexcept

在文件 all_defs.cpp11213 行定义.

11213 :_pattern(pattern){
11215 }
constexpr T down_cast(U a) noexcept
向下转型至
constexpr void build_table(const array_like_view_t< T > &pattern) noexcept

成员函数说明

◆ build_table()

template<typename T >
constexpr void elc::defs::base::range_n::match_pattern< T >::build_table ( const array_like_view_t< T > &  pattern)
inlineconstexprnoexcept

在文件 all_defs.cpp11204 行定义.

11204 {
11205 const size_t m=pattern.size();
11206 if(!m)
11207 return;
11209 skip_table[i]=m+1;
11210 for(size_t i=0;i<m;i++)
11212 }
size_t skip_table[number_of_possible_values_per< index_type >]
static constexpr index_type get_index_of(T &ch) noexcept

◆ get_index_of()

template<typename T >
static constexpr index_type elc::defs::base::range_n::match_pattern< T >::get_index_of ( T &  ch)
inlinestaticconstexprnoexcept

在文件 all_defs.cpp11201 行定义.

◆ match()

template<typename T >
constexpr T * elc::defs::base::range_n::match_pattern< T >::match ( const array_like_view_t< T > &  range) const
inlineconstexprnoexcept

在文件 all_defs.cpp11216 行定义.

11216 {
11217 size_t off_set=0;
11218 size_t matching_off_set=1;
11219
11220 floop{
11222 while(_pattern.end()[0-matching_off_set]==range.begin()[off_set+_pattern.size()-matching_off_set])
11223 if(matching_off_set==_pattern.size())
11224 return addressof(range.begin()[off_set]);
11225 else
11227 if(off_set+_pattern.size() >= range.size())
11228 return nullptr;
11229 off_set+=skip_table[get_index_of(range.begin()[off_set+_pattern.size()])];
11230 }
11231 }
#define floop
Definition all_defs.cpp:543
thread_local ptrdiff_t off_set
函数调用图:
这是这个函数的调用关系图:

类成员变量说明

◆ _pattern

在文件 all_defs.cpp11196 行定义.

◆ skip_table

在文件 all_defs.cpp11199 行定义.

11199{};

该结构体的文档由以下文件生成: