假设服务器需要最低客户端版本。
有一个主要版本和次要版本,例如:
1,0 1,2 2,0 2,9
给出如下函数:
bool checkVersion(int minimumMajor,int minimumMinor,int clientMajor, int clientMinor) {
//TODO
}
实现会是什么样的?
逻辑基本上是
return clientMajor.clientMinor >= minimumMajor.MinimumMinor
但是使用浮标制作浮标似乎效率低下。什么可能是一种快速的方式来做这个逻辑。
由于
答案 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