<分区>
我正在处理请求应具有从 -2 到 -101(含)的唯一编号的要求,即一次有 100 个唯一请求。如果在给定时间有超过 100 个请求,那么我应该发送错误。最初我没有要求。发送请求后,我将采用唯一编号,例如 -2 、 -3 等。这里的要求是我可能会从客户端获取命令不要向服务器发送请求,例如 -2 所以我应该删除这个请求,我应该为 future 的请求重用这个数字。
用 C++ 实现它的最佳方法是什么?
此外,我不应该使用 Boost。
标签 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/