用于验证主要版本和次要版本要求的逻辑?

时间:2015-05-17 01:46:35

标签: c++ c algorithm

假设服务器需要最低客户端版本。

有一个主要版本和次要版本,例如:

1,0 1,2 2,0 2,9

给出如下函数:

bool checkVersion(int minimumMajor,int minimumMinor,int clientMajor, int clientMinor) {
//TODO
}

实现会是什么样的?

逻辑基本上是

return clientMajor.clientMinor >= minimumMajor.MinimumMinor

但是使用浮标制作浮标似乎效率低下。什么可能是一种快速的方式来做这个逻辑。

由于

3 个答案:

答案 0 :(得分:4)

为什么不简单:

if (clientMajor > minimumMajor) return true;
else if (clientMajor == minimumMajor && clientMinor >= minimumMinor) return true;
return false;

答案 1 :(得分:3)

使用C ++标准库和编译器的优化。

#include <tuple>

bool checkVersion(int minimumMajor, int minimumMinor, int clientMajor, int clientMinor) {
    return std::make_tuple(clientMajor, clientMinor) >= std::make_tuple(minimumMajor, minimumMinor);
}

答案 2 :(得分:1)

首先检查主要版本。如果它们相等,那么检查第二个。否则,您不必为次要版本而烦恼。

或者,如果您认为主要版本永远不会超过某个数字(比如1024),那么您可以这样做:

(minimumMajor*1024)+minimumMinor < (clientMajor*1024)+clientMinor

或者,更有效率:

(minimumMajor<<10)+minimumMinor < (clientMajor*1024)+clientMinor