NEPLg2 Standard Library - queue - queue
Web Playground
Web Playground

queue

RingBuffer使つかった FIFO queue

目的もくてき

  • 末尾まつび追加ついかし、先頭せんとうからす queue API を提供ていきょうします。
  • RingBuffer<.T>所有権しょゆうけん容量管理ようりょうかんりをそのまま利用りようしつつ、queue けの名前なまえ公開こうかいします。

実装じっそう

  • 内部ないぶには RingBuffer<.T> を 1 保持ほじし、queue helper は対応する ringbuffer helper へ委譲いじょうします。

注意ちゅうい

  • queue_push更新後こうしんごQueue<.T>Resultかえすため、pipe 記法きほうでは |> queue_push ... |> uwokかたちなおします。
  • queue_pop / queue_peekから queue を失敗しっぱいではなく Option::None としてかえします。
  • queue_free 再利用さいりよう禁止きんしです。

計算量けいさんりょう

  • len / is_empty / peek / pop は O(1) です。
  • push償却しょうきゃく O(1)、拡張かくちょう発生時はっせいじ最悪さいあく時間じかん計算量けいさんりょうは O(n) です。

Queue

RingBuffer<.T>所有しょゆうする queue handle

目的もくてき

  • queue API の内部状態ないぶじょうたいを 1 あたいにまとめ、push / pop おなかたわたしできるようにします。

注意ちゅうい

  • rb所有権しょゆうけんRingBuffer<.T> です。
  • Queue<.T>Copy / Clone 前提ぜんていではありません。

queue_new

からの queue をつく

目的もくてき

  • 既定きてい容量ようりょうから Queue<.T>作成さくせいします。

実装じっそう

  • ringbuffer_new<.T>び、成功時せいこうじQueueつつなおします。

注意ちゅうい

  • 確保かくほ失敗しっぱいResult::Err Diag としてかえります。

計算量けいさんりょう

  • O(1)

queue_with_capacity

初期しょき容量ようりょう指定していして queue をつく

目的もくてき

  • すくなくとも cap 保持ほじできる queue を作成さくせいします。

実装じっそう

  • ringbuffer_with_capacity<.T>び、成功時せいこうじQueueつつなおします。

注意ちゅうい

  • 実際じっさい容量ようりょうは ringbuffer がわ規則きそくしたがいます。

計算量けいさんりょう

  • O(1)

queue_len

要素数ようそすうかえ

目的もくてき

  • 現在げんざい queue にはいっている要素数ようそすうかえします。

計算量けいさんりょう

  • O(1)

queue_is_empty

からかどうかを調しらべる

目的もくてき

  • queue がからなら true、1 要素ようそでもあれば falseかえします。

計算量けいさんりょう

  • O(1)

queue_push

末尾まつび追加ついかする

目的もくてき

  • item を queue の末尾まつび追加ついかし、更新後こうしんごQueue<.T>かえします。

実装じっそう

  • RingBufferpush_back委譲いじょうし、かえってきた ringbuffer をあたらしい Queueつつなおします。

注意ちゅうい

  • 更新後こうしんごの queue をる API なので、set または pipe で束縛そくばくなおしてください。

計算量けいさんりょう

  • 償却しょうきゃく O(1)、拡張かくちょう発生時はっせいじ最悪さいあく時間じかん計算量けいさんりょうは O(n) です。

queue_pop

先頭せんとうから

目的もくてき

  • 先頭せんとう要素ようそし、からなら Option::Noneかえします。

注意ちゅうい

  • 成功時せいこうじは queue 内部ないぶ先頭位置せんとういちが 1 要素分ようそぶんすすみます。

計算量けいさんりょう

  • O(1)

queue_peek

先頭せんとう参照さんしょうする

目的もくてき

  • 先頭せんとう要素ようそ消費しょうひせずにたいときに使つかいます。

注意ちゅうい

  • からなら Option::None です。

計算量けいさんりょう

  • O(1)

queue_clear

内容ないようからにする

目的もくてき

  • 確保済かくほず容量ようりょう維持いじしたまま、要素ようそだけをからもどします。

計算量けいさんりょう

  • O(1)

queue_free

内部ないぶメモリを解放かいほうする

目的もくてき

  • queue が保持ほじする ringbuffer header と要素ようそ領域りょういき解放かいほうします。

注意ちゅうい

  • free の queue を再利用さいりようしてはいけません。

計算量けいさんりょう

  • O(1)