创建数字池

时间:2016-01-15 23:35:26

标签: c++

我创建了一个简单的容器类,它包含一个唯一数字池中的数字。然后在销毁容器之前将数字返回池中。

//Pooled.hpp
#pragma once

#include <queue>

class Pooled {
public:
    Pooled();
    ~Pooled();
    //Edit: disable copy and copy assignment here
    const int number;
private:
    int getNumber();
    static std::queue<int> pool;
    static int currentSize;
};

//Pooled.cpp
#include "Pooled.hpp"

std::queue<int> Pooled::pool;
int Pooled::currentSize = 1;

Pooled::Pooled() : number(getNumber()) {}

Pooled::~Pooled() {
    pool.push(number);
}

int Pooled::getNumber() {
    if (pool.empty()) {
        pool.push(currentSize);
        currentSize++;
    }
    int newNumber = pool.front();
    pool.pop();
    return newNumber;
}

但是,我想说我想创建多个数字池。我可以在某处定义任意数量的std::queue<int> s,然后让每个Pooled对象保存对特定对象的引用。但这会使每个Pooled对象的大小翻倍。

或者我可以为我需要的每个游泳池创建一个类,例如Pooled1Pooled2听起来相当愚蠢,但保持每个对象都很小。有没有办法实现这两个目标?

0 个答案:

没有答案