20 if (item >= dedup_.size()) {
21 dedup_.resize(item + 1);
25 placeQ_.push_back(item);
33 takeQ_.reserve(placeQ_.size());
34 for (
size_t i = 0, n = placeQ_.size(); i < n; ++i) {
35 takeQ_.push_back(placeQ_[n - i - 1]);
40 const auto &item = takeQ_.back();
49 return takeQ_.empty() && placeQ_.empty();
53 size_t Size()
const {
return placeQ_.size() + takeQ_.size(); }
57 std::vector<ID<T>> placeQ_;
59 std::vector<ID<T>> takeQ_;
61 std::vector<bool> dedup_;