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

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

Public 类型

typedef unsigned char index_type
 

Public 成员函数

constexpr void build_table (const array_like_view_t< T > &pattern) noexcept
 
constexpr reverse_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::reverse_match_pattern< T >

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

在文件 all_defs.cpp11237 行定义.

成员类型定义说明

◆ index_type

在文件 all_defs.cpp11239 行定义.

构造及析构函数说明

◆ reverse_match_pattern()

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

在文件 all_defs.cpp11255 行定义.

11255 :_pattern(pattern){
11257 }
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::reverse_match_pattern< T >::build_table ( const array_like_view_t< T > &  pattern)
inlineconstexprnoexcept

在文件 all_defs.cpp11246 行定义.

11246 {
11247 const size_t m=pattern.size();
11248 if(!m)
11249 return;
11251 skip_table[i]=m+1;
11252 for(size_t i=0;i<m-1;i++)
11254 }
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::reverse_match_pattern< T >::get_index_of ( T &  ch)
inlinestaticconstexprnoexcept

在文件 all_defs.cpp11243 行定义.

◆ match()

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

在文件 all_defs.cpp11258 行定义.

11258 {
11259 size_t off_set=0;
11260 size_t matching_off_set=0;
11261
11262 floop{
11264 while(_pattern.begin()[matching_off_set]==range.end()[0-(off_set+_pattern.size()-matching_off_set)])
11265 if(matching_off_set==_pattern.size()-1)
11266 return addressof(range.end()[0-(off_set+_pattern.size())]);
11267 else
11269 if(off_set+_pattern.size() >= range.size())
11270 return nullptr;
11271 off_set+=skip_table[get_index_of(range.end()[0-(off_set+_pattern.size()+1)])];
11272 off_set++;
11273 }
11274 }
#define floop
Definition all_defs.cpp:543
thread_local ptrdiff_t off_set
函数调用图:
这是这个函数的调用关系图:

类成员变量说明

◆ _pattern

在文件 all_defs.cpp11238 行定义.

◆ skip_table

在文件 all_defs.cpp11241 行定义.

11241{};

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