std::queue set_capacity
时间: 2023-07-08 20:29:36 浏览: 311
在 C++ STL 中,std::queue 是一个模板类,表示一个队列容器,其默认情况下没有 set_capacity 方法。
std::queue 的容量由其底层容器类型决定,如果底层容器是 std::deque,则队列容量取决于可用内存。
如果想要限制 std::queue 的容量,可以考虑使用自定义的底层容器类型,并在该底层容器类型中实现 set_capacity 方法。
例如,可以自定义一个基于 std::deque 的容器类型,并在其中实现 set_capacity 方法,如下所示:
```
template <typename T>
class LimitedQueue {
public:
LimitedQueue(size_t capacity) : capacity_(capacity) {}
void push(const T& value) {
if (data_.size() >= capacity_) {
data_.pop_front();
}
data_.push_back(value);
}
void set_capacity(size_t capacity) {
capacity_ = capacity;
while (data_.size() > capacity_) {
data_.pop_front();
}
}
private:
std::deque<T> data_;
size_t capacity_;
};
std::queue<int, LimitedQueue<int>> q(LimitedQueue<int>(10));
```
这样就可以限制 std::queue 的容量为 10 了。使用 set_capacity 方法可以动态地修改队列的容量。
阅读全文