c++ - 在 C++ 中生成和重用唯一 ID

标签 c++

<分区>

我正在处理请求应具有从 -2 到 -101(含)的唯一编号的要求,即一次有 100 个唯一请求。如果在给定时间有超过 100 个请求,那么我应该发送错误。最初我没有要求。发送请求后,我将采用唯一编号,例如 -2 、 -3 等。这里的要求是我可能会从客户端获取命令不要向服务器发送请求,例如 -2 所以我应该删除这个请求,我应该为 future 的请求重用这个数字。

用 C++ 实现它的最佳方法是什么?

此外,我不应该使用 Boost。

最佳答案

扩展我的 std::bitset 评论:

您可以使用 id 作为 bitset 的索引,使用值 (true/false) 作为 id 的可用性。

class IdStorage {
    const int N = 100;
   std::bitset<N> ids;

   bool allIdsUsed() { 
       return ids.all();
   }

   int getId() {
     if(allIdsUsed())
         throw "Error";

     for(int i = 0; i < N; ++i )
        if(ids.test(i))
            return i - 2;
   }

   void releaseId(int i) {
       ids.set(i + 2);
    }

}

请注意,这是在类里面输入的,超出了我的想象。检查documentation

关于c++ - 在 C++ 中生成和重用唯一 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13702220/

相关文章:

c++ - 如何编写一个给出两个参数最大值的 C++ 模板?

c++ - 简单的拼接代码

c# - 在 C++ 或 C# 中的 DirectX 中捕获快速游戏屏幕

C++ 从派生类的友元函数访问基类的 protected 成员

c++ - 使用 QT 库的 C++ 中这行代码的等效项是什么?

c++ - 出现未定义的类类型错​​误,但我确实创建了类并定义了它

c++ - for循环中 bool 值不变

c++ - 如何使用 rapidjson 读取 json 文件并输出到 std::string?

c++ - 如何在 Opencv 中绘制匹配项?

c++ - Visual Studio 中的 stb_image.h - 未解析的外部符号