sort()函数常用情形:
对 [first, last) 区域内的元素做默认的升序排序
void sort (RandomAccessIterator first, RandomAccessIterator last);
eg: int a[n]
sort(a,a+n)
vector st(size);
sort(st.begin(),st.end());
//按照指定的 comp 排序规则(可自己定义该comp函数,并作为参数),对 [first, last) 区域内的元素进行排序
void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);
题目:
安全局搜索到了一批(n个)身份证号码,希望按出生日期对它们进行从大到小排序,如果有相同日期,则按身份证号码从大到小进行排序。身份证号码为18位的数字组成,出生日期为第7到第14位
代码:
using namespace std;
int cmp(string a, string b) //单独定义出排序规则,用于填sort函数的第三个参数
{
string x=a.substr(6, 8);
string y=b.substr(6, 8);
if(x!=y)
return x>y;
else
return a>b;
return 0;
}
int main()
{
int n;
cin>>n;
vector<string> str(n) //元素个数为n,类型为string
for(int i=0;i<n;i++)
cin>>str[i];
sort(str.begin(),str.end(),cmp); //利用迭代器作为参数
for(int i=0;i<n;i++)
cout<<str[i]<<endl;
return 0;
}