返回介绍

4.15.1 数组定位符方法

发布于 2020-09-09 22:55:46 字数 1804 浏览 1168 评论 0 收藏 0

数组定位符方法可以对任意非压缩数组(包括队列)进行操作,但它们的返回值是一个队列。这些定位符方法能够在数组中搜索满足一个指定表示式的元素(或它们的索引)。数组定位符方法以未指定的顺序遍历数组。表达式选项不应具有任何边带效应,否则,会出现不可预料的结果。

这些方法的原型如下:

function array_type[$] locator_method(array_type iterator=item);
// 与数组相同的类型

或者

function int_or_index_type[$] index_locator_method(array_type iterator=item);
// 索引类型

索引定位符方法为除联合数组外的所有数组返回一个int队列,而对联合数组的操作返回一个与联合数组索引类型具有相同类型的队列。

如果没有元素满足指定的表达式或者数组是空数组(在队列或动态数组的情况下),那么返回一个空队列。否则,这些方法返回一个包含满足表达式的所有元素的队列。索引定位符方法返回一个满足表达式的所有元素的索引的队列。使用with子句指定的可选表达式必须能够计算成一个布尔值。

定位符方法在数组元素上迭代,接着它被用来计算with子句指定的表达式。迭代器自变量可选地指定变量的名字,with表达式使用这个变量在每一次迭代上指定数组的元素。如果没有指定,那么使用缺省的元素名字。迭代器名字的范围就是with表达式。

支持下列的定位符方法(with子句是强制的):

  • find()返回满足指定表达式的所有元素。
  • find_index()返回满足指定表达式的所有元素的索引。
  • find_first()返回满足指定表达式的第一个元素。
  • find_first_index()返回满足指定表达式的第一个元素的索引。
  • find_last()返回满足指定表达式的最后一个元素。
  • find_last_index()返回满足指定表达式的最后一个元素的索引。

对于下列的定位符方法,如果为指定数组的元素类型定义了关系操作符,那么with子句(<,>,==)(以及它的表达式)可以被忽略。如果指定了一个with子句,表达式类型的关系操作符(<,>,==)必须被定义。

  • min()返回具有最小值或者它的表达式可以被计算成最小的元素。
  • max()返回具有最大值或者它的表达式可以被计算成最大的元素。
  • unique()返回具有唯一值或者它的表达式是唯一的所有元素。
  • unique_index()返回具有唯一值或者它的表达式是唯一的所有元素的索引。

例子:

string SA[10], qs[$];
int IA[*], qi[$];

// 找到大于5的所有元素
qi = IA.find(x) with (x>5);

// 找到等于3的所有元素的索引。
qi = IA.find_index with (item==3);

// 找到等于Bob的第一个元素
qs = SA.find_first with(item=="Bob");

// 找到等于Henry的最后一个元素
qs = SA.find_last(y) with (y=="Henry");

// 找到大于Z的最后一个元素的索引
qi = SA.find_last_index(s) with (s>"Z");

// 找到最小的元素
qi = IA.min;

// 找到具有最大数值的字符串
qs = SA.max with(item.atoi);

// 找到所有的唯一字符串元素
qs = SA.unique;

// 找到以小写字母表示的所有唯一字符串
qs = SA.unique(s) with (s.tolower);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文