1.vectorsortԴ?源码?
2.为什么向sort传递一对反向迭代器可以实现vector按降序排序
vectorsortԴ??
#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
using namespace std;
typedef struct student
{
int sorce;
char number[];
}st;
void sort(vector<st>&st)
{
int size=st.size();
for(int i=0;i<size-1;i++)
for(int j=i+1;j<size;j++)
{
if(st[i].sorce>st[j].sorce)
{
swap(st[i],st[j]);
}
}
}
void main()
{
vector<st> vt;
st s;
s.sorce=;
strcpy(s.number,"shao");
vt.push_back(s);
s.sorce=;
strcpy(s.number,"zhang");
vt.push_back(s);
for(vector<st>::iterator it=vt.begin();it!=vt.end();++it)
cout<<it->sorce<<" "<<it->number<<endl;
sort(vt);
cout<<"++++++++++++++++++++"<<endl;
for(it=vt.begin();it!=vt.end();++it)
cout<<it->sorce<<" "<<it->number<<endl;
}
为什么向sort传递一对反向迭代器可以实现vector按降序排序
了解向sort传递一对反向迭代器实现vector按降序排序的关键在于理解迭代器与元素之间的映射关系。以数组[1,源码 2, 3]为例,反向迭代器所指向的源码序列变为[3, 2, 1],映射关系则变为{ p+2: 3,源码android源码部署 p+1: 2, p+0: 1},其中p代表元素所在地址,源码value为元素值。源码zend框架源码
在sort函数的源码作用下,这些元素按照地址进行交换,源码意味着映射关系变化为{ p+2: 1,源码 p+1: 2, p+0: 3},随后按照正序排列的源码地址,映射关系变为{ p+0: 3,源码 p+1: 2, p+2: 1},即实现了元素值的源码降序排列,形成数组[3,源码电视应用源码 2, 1]。这一过程展示了向sort传递反向迭代器实现降序排序的源码原理。
为了直观演示反向迭代器的源码排序,我们选取了选择排序这一方法进行简单模拟。android 后台源码选择排序方法易于实现,无需同时支持++操作,从而简化了操作流程,php源码代写达到直观理解向sort传递反向迭代器实现降序排序的效果。