C++,string比较,请问a.compare(b)和a>b的区别?
查看原帖
C++,string比较,请问a.compare(b)和a>b的区别?
282482
黑白火柴人楼主2022/11/11 16:17
//习惯加入一堆库,大部分没用到
#include <iostream>
#include <vector>
#include <cstring>
#include <string>
#include <sstream>
#include <cstdint>
#include <cmath>
#include <algorithm>
#include <iomanip>
#include <time.h>

#define _for(i,a,b) for(int i=a;i<b;i++)
#define bug cout<<"bug"<<endl

using namespace std;

//比较规则
bool cmp(string a, string b)
{
	string ab = a + b;
	string ba = b + a;
	return ab > ba;//此语句可通过本题,但若换成下面的被注释掉的语句则不可,想请问为什么?
	//if (ab.compare(ba) == 1)return true;
	//return false;
}

int main()
{
	//取得n
	int n;
	cin >> n;
    
	//建立数组,并用for循环将数字以string方式填入数组
	vector<string> v;
	for (int i = 0; i < n; i++)
	{
		int ti;
		string temp;
		cin >> ti;
		temp = to_string(ti);
		v.push_back(temp);
	}
    
	//执行排序,利用上文所说的cmp规则
	sort(v.begin(), v.end(), cmp);
    
	//依次从大到小输出
	for (int i = 0; i < v.size(); i++)cout << v[i];
    
	//结束
	return 0;
}

这个代码可以通过本题,但ab>ba换成if (ab.compare(ba) == 1)return true;则不可,想请问为什么呢?

2022/11/11 16:17
加载中...