YSTest: Gerneral Algorithms

YSTest PreAlpha_b900_20201012 The YSLib Test Project

函数
Gerneral Algorithms

算法。 更多...

## 函数

template<typename _tRange >
auto | ystdex::range_size (const _tRange &c) -> decltype(details::range_size(c, details::has_range_size< _tRange >()))
| 取范围大小。 更多...
template<class _tCon , typename _tKey >
bool | ystdex::exists (const _tCon &con, const _tKey &key)
| 判断指定的容器中存在指定的键。 更多...

## 详细描述

算法。

字符串算法。

注解
  范围包含序列容器及内建数组等。容器概念和容器要求参见 ISO C++ Clause 23 。

参见
  WG21 N3936 25.1[algorithms.general] 。

自从
  build 189

注解
  模板形参关键字 `class` 表示仅支持类类型对象字符串。

自从
  build 304

## 函数说明

## ◆ exists()

template<class _tCon , typename _tKey >

bool ystdex::exists | ( | const _tCon & | con,
|  | const _tKey & | key
| ) |  |

inline

判断指定的容器中存在指定的键。

参见
  ystdex::cbegin
  ystdex::cend

自从
  build 488

按容器类型支持的操作判断参数指定的键的存在性。 按以下顺序查找支持的操作： 尝试使用 find 非静态成员函数，返回可比较的迭代器，迭代器比较结果类型可转换为 bool ； 尝试使用 count 非静态成员函数返回可转换为 size_t 的整数类型的值； 使用 std::find 在容器中查找键。 优先使用成员 find 而不是 count 以提升一般性能。

在文件 container.hpp 第 462 行定义.

引用了 ystdex::details::exists().

被这些函数引用 YSLib::UI::Menu::Menu(), YSLib::UI::TreeList::QueryNodeState() , 以及 YSLib::Drawing::Typeface::Typeface().

函数调用图:
这是这个函数的调用关系图:

## ◆ range_size()

template<typename _tRange >

auto ystdex::range_size | ( | const _tRange & | c | ) | -> decltype(details::range_size(c, details::has_range_size<_tRange>()))

inline

取范围大小。

前置条件
  参数指定的迭代器范围（若存在）有效。

注解
  参数 `first` 和 `last` 指定迭代器范围。
  对不以迭代器指定的范围，使用 ystdex::begin 和 ystdex::end 取迭代器。
  确定为 const 迭代器时使用 ystdex::cbegin 和 ystdex::cend 代替。

自从
  build 546

对 std::initializer_list 的实例直接返回大小，否则： 若可调用结果可转换为 size_t 的 ADL 函数 size 则使用 ADL size ； 否则使用 std::distance 计算范围迭代器确定范围大小。

在文件 container.hpp 第 123 行定义.

引用了 CHRLib::c , 以及 ystdex::details::range_size().

被这些函数引用 main() , 以及 ystdex::vector_concat().

函数调用图:
这是这个函数的调用关系图: