写出compare方法,用c++实现
时间: 2023-08-04 11:15:11 浏览: 73
匹配的东西,用C++写的
好的,下面是一个用C++实现的compare方法,可以用于比较两个Base36类型的实例的大小关系。如果实例a的值大于实例b的值,则返回1;如果实例a的值小于实例b的值,则返回-1;如果实例a的值等于实例b的值,则返回0。
```c++
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
class Base36 {
public:
string to_base_36(int decimal) {
if (decimal == 0) {
return "0";
}
string res = "";
while (decimal > 0) {
int remainder = decimal % base;
decimal /= base;
res = chars[remainder] + res;
}
return res;
}
int from_base_36(string s) {
int res = 0;
int n = s.length();
for (int i = 0; i < n; i++) {
int digit = 0;
if (s[i] >= '0' && s[i] <= '9') {
digit = s[i] - '0';
} else if (s[i] >= 'A' && s[i] <= 'Z') {
digit = s[i] - 'A' + 10;
}
res += digit * pow(base, n - 1 - i);
}
return res;
}
int compare(string a, string b) {
int decimal_a = from_base_36(a);
int decimal_b = from_base_36(b);
if (decimal_a > decimal_b) {
return 1;
} else if (decimal_a < decimal_b) {
return -1;
} else {
return 0;
}
}
private:
int base = 36;
string chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
};
int main() {
Base36 b36;
string a = "1A";
string b = "ZZZ";
int cmp = b36.compare(a, b);
cout << "a and b comparison result: " << cmp << endl; // Output: a and b comparison result: -1
return 0;
}
```
在这个例子中,我们添加了一个名为compare的方法,它接受两个Base36类型的实例a和b作为参数,并返回它们之间的大小关系。
阅读全文