--- nono/lib/qvector.h 2026/04/29 17:04:28 1.1 +++ nono/lib/qvector.h 2026/04/29 17:04:54 1.1.1.4 @@ -1,10 +1,12 @@ // // nono -// Copyright (C) 2019 isaki@NetBSD.org +// Copyright (C) 2020 nono project +// Licensed under nono-license.txt // #pragma once +#include "header.h" #include // std::vector だが所々 queue っぽく使いたい。 @@ -28,30 +30,34 @@ class qvector v = std::vector(begin, end); cur = 0; } - // コピーコンストラクタ - qvector(const qvector& obj) { - v = obj.v; - cur = obj.cur; + + // 配列の末尾に追加する。 + void append(const T val) { + v.push_back(val); } // 先頭の1要素を削除して、返す。 - // 空の場合の動作は不定。 - T pop() { + // 空の場合は T() を返す。 + T dequeue() { if (__predict_true(cur < v.size())) { return v[cur++]; } else { - // XXX 動作不定 - return 0; + return T(); } } + // 配列の中身を読み取る。 + T peek(int i) const { + return v[i]; + } + // 現在の要素数を返す。 - size_t size() { + size_t size() const { return v.size() - cur; } // 空なら true を返す。 - bool empty() { + bool empty() const { return (cur == v.size()); } @@ -63,5 +69,5 @@ class qvector private: std::vector v {}; - int cur = 0; + int cur {}; };