返回介绍

4.15.2 数组排序方法

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

数组排序方法可以对一维数组或队列的元素重新排序。

数组排序方法的基本原型如下:

function void ordering_method (array_type iterator = item)

SystemVerilog支持下列的排序方法:

  • reverse()反转数组(压缩的以及非压缩的)中的所有元素。指定一个with子句会引起一个编译器错误。
  • sort()以升序排列非压缩数组,可选地在with子句中使用表达式。当为数组元素类型定义了关系操作符的时候,with子句(以及它的表达式)是可选的。
  • rsort()以降序排列非压缩数组, 可选地在with子句中使用表达式。当为数组元素类型定义了关系操作符的时候,with子句(以及它的表达式)是可选的。
  • shuffle()将数组中元素的顺序随机化。指定一个with子句会引起一个编译器错误。

例子:

string s[] = {"hello", "sad", "world"};
s.reverse;   // s变为{"world", "sad", "hello"};

logic [4:1] b = 4'bXZ01;
b.reverse;   // b变为4'b10ZX

int q[$] = {4, 5, 3, 1};
q.sort;      // q变为{1, 3, 4, 5}

struct {byte red, green, blue} c [512];
c.sort with(item.red);      // 仅使用red域对c排序
c.sort(x) with (x.blue<<8+x.green); // 以blue接着green的顺序排序

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

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

发布评论

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