返回介绍

4.14.1 队列操作符

发布于 2020-09-09 22:55:45 字数 1331 浏览 1164 评论 0 收藏 0

队列可以与非压缩数组执行相同的操作,除下述的操作符和操作规则外,它们使用相同的操作符和操作规则。

int q[$] = {2, 4, 8};
int p[$];
int e, pos;
e = q[0];     // 读取第一个(最左边)条目。
e = q[$];     // 读取最后一个(最右边)条目。
q[0] = e;     // 写第一个元素
p = q;        // 读和写整个队列(拷贝)
q = {q, 6};   // 在队列的尾部插入'6'
q = {e, q};   // 在队列的头部插入'e'
q = q[1:$];   // 删除第一个(最左边)元素
q = q[0:$-1]; // 删除最后一个(最右边)元素
q = q[1:$-1]; // 删除第一个和最后一个元素
q = {};       // 清除队列(删除所有的元素)
q = {q[0:pos-1], e, q[pos:$]}; // 在位置'pos'处插入'e'
q = {q[0:pos], e, q[pos+1:$]}; // 在位置'pos'之后插入'e'

与数组不同,空队列,{},是一个有效的队列,并且可以作为某些队列操作的结果。下列规则适用于队列操作符:

  • Q[a:b] 产生具有b-a+1个元素的队列。
  • 如果a>b,那么Q[a:b]产生一个空队列{}。
  • Q[n:n]产生具有一个元素的队列,这个元素位于位置n。因此,Q[n:n]==={Q[n]}
  • 如果 n位于Q(n < 0 或 n > $)的范围之外,那么Q[n:n]产生一个空队列{}。
  • 无论是a还是b是一个包含X或Z的四态表达式,都产生一个空队列{}。
  • Q[a:b]中如果a < 0,那么它与Q[0:b]相同。
  • Q[a:b]中如果b > $,那么它与Q[a:$]相同。
  • 使用无效索引值(例如包含X或Z的四态表示式,或者位于0...$之外的值)的读操作返回对列元素类型的初始值(如表4-1所述)。
  • 使用无效索引值(例如包含X或Z的四态表示式,或者位于0...$之外的值)的写操作会被忽略,并在运行时发布警告信息。注意:向Q[$+1]写入是合法的。
  • 使用[$:N]声明右边界的队列应被限制为从0到N索引(队列的最大尺寸为N+1)。位于这个限制之外的索引是无效的,因此,在队列尾部之外的写操作会被忽略,并发布一个警告信息。这些警告信息或者在编译时发布,或者在运行时发布,只要一发现索引位于队列尺寸限制之外就发布。

注意:队列和动态数组具有相同的赋值和自变量传递语义。

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

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

发布评论

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