### Buffer Concept

Buffer とは、その中に何かしらアイテムを書き込んだり、削除したりできる もの である。 Buffer のコンセプトは、ほとんど要求を持たない。 アイテムが格納の仕方や 削除される時に関して、 いかなる特定の順序付けも要求してはいないが、 例によって、 ソートに関しては順序付けのポリシーがいくつかある。

### Notation

`B` | Buffer のモデルである型。
`T` | `B` の値の型。
`t` | `T` のオブジェクト。

### Members

Buffer をモデル化する型 は 以下のメンバーを持たなければならない。

Member | Description
`value_type` | Buffer 内に格納されるオブジェクトの型。 その値の型は Assignable でなければならない。
`size_type` | Buffer 内のオブジェクトの数を表す 符号無し整数型。
`void push(const T& t)` | `t` を Buffer 内に挿入する。 `size()` は 1 インクリメントされる。
`void pop()` | Buffer からオブジェクトを削除する。 `size()` は 1 デクリメントされる。 事前条件: `empty()` は `false` である。
`T& top()` | Buffer 内のあるオブジェクトへの 非const な参照を返す。 事前条件: `empty()` は `false` である。
`const T& top() const` | Buffer 内のあるオブジェクトへの const な参照を返す。 事前条件: `empty()` は `false` である。
`void size() const` | Buffer 内のオブジェクトの数を返す。 不変式: `size() >= 0`.
`bool empty() const` | `b.size() == 0` と等価。

### Complexity Guarantees

- `push()`、`pop()` と `size()` は Generalized Queue の サイズに関して、 高々 線形時間の計算量でなければならない。
- `top()` と `empty()` は定数時間で終了しなければならない。

### Models

- `std::stack`
- `boost::mutable_queue`

Copyright © 2000-2001 | Jeremy Siek, Indiana University and C++ Library & Compiler Group/SGI (jsiek@engr.sgi.com)