c++ 中字符串 string

string.size()
string.erase()
operator:
[]:访问指定位置的字符串
=:赋值
+:连接
== / > ... :按字典序比较两个字符串
>>   <<   :string流的输入输出
getline() :从I/O流读取数据到字符串

#include<iostream>
#include<algorithm>
#include<cstring> 
using namespace std;

string nums[23];    //string num[1]是一个字符串

bool cmp(const string &a,const string &b)
{
	return a+b>b+a;  
	//字符串自带 + >  
	/*
	自定义排序函数,这一步非常巧妙,假设a=321,b=32;a+b=32132,b+a=32321这样下面sort排下来就是32>321
	避免出现32132>32321的情况 
	
	*/ 
} 

int main()
{
	int n;
	cin>>n;
	
	for(int i=0;i<n;i++)
	{
		cin>>num[i];
	}
	
	sort(nums,nums+n,cmp);
	
	for(int i=0;i<n;i++)
	{
		cout<<nums[i];
	}
	cout<<endl;
	return 0;
}
/*
对这个cmp提供我自己的见解:
抛开这道题
如果要求从小到大排序
bool cmp(const string &a,const string &b)
{
    return a>b;
}
sort(a,a+n,cmp)         从a到a +n  这n个数,依次比较,当return 值为1时,a排在b前面
类比   当a+b  >  b+a  时,a排在b前面,类似的道理
*/

 posted on 2020-04-08 23:04  My_serendipity  阅读(255)  评论(0编辑  收藏  举报