新しい要素が挿入された場合に最も古い/最後の要素をプッシュするデータ構造を探しています。たとえばD
、構造を表します。D
タイプの3つの要素が含まNumber
D
のデフォルト値に初期化される1, 2
とし3
。
場合にNumber
値が含まれていることが5
中に挿入されD
、3
押し出さされ、一方1
及び2
右にシフトされます。
最初に頭に浮かぶのは配列ですが、定義にはプッシュ動作が含まれていません。
さて、組み込みのデータ構造はありませんが、二重リンクリストを使用して簡単に実装できます。
—
ユーザーが見つかりません
キューから継承するラッパーを使用するのはどうですか?次に、メソッドを追加します
—
フランチェスコドンディ
void push_replace(T val) { pop(); push(val); }
。
@FrancescoDondiはおそらく
—
バルバカ
T push_replace(T val) { T old = pop(); push(val); return old; }
今間違いなくあります:あなたは非公式にそれを定義しました。よく知られているかどうか、一般的に合意されたインターフェースを持っているかどうか、実装が利用できるかどうかを尋ねるべきでしょう(最後の問題が大きい問題ではない)。
—
PJTraill
@valbaca
—
フランチェスコドンディ
pop()
複雑なオブジェクトをコピーする例外の場合、スタックの巻き戻しの問題のために何も返さないC ++を考えているので、front()
破棄する前に必要な場合は前に使用することになっています。しかし、例外を気にしないのであれば、あなたのやり方はより良いものになるでしょう。