在C#中,可以List来代替C++中Vector。
对于LIST的排序,需要使用到Sort()方法,为了让排序方式按照我们自己的想法进行,
可以通过IComparable接口重写CompareTo方法来实现。
例子:
有一个包含人名,年龄等信息的LIST,我们需要根据年龄做从大到小或者从小到大的排序,做法如下:
public class MyInfo:IComparable<MyInfo>//定义MyInfo类,并继承IComparable
{
public int age;
public double value;
public string name;
public int CompareTo(MyInfo obj)//重写排序方法,本例中按年龄排序
{
int iresult=-1;
if(this.age==obj.age)
{
iresult=0;
}
else if(this.age.CompareTo(obj.age)<0)//从小到大排序,如需要从大到小则用>即可
{
iresult=1;
}
else
{
iresult=-1;
}
return iresult;
}
}
调用部分:
List <MyInfo> mystr=new List<MyInfo>();
int []agearray=new int[]{20,30,60,14,16,42,34,45,22,31};
string []names=new string[]{"A","B","C","D","E","F","G","H","I","J"};
for(int i=0;i<10;i++)//在List中放入10个数据
{MyInfo stem=new MyInfo();
stem.name=names[i];
stem.age=agearray[i];
stem.value=i/3;
mystr.Add(stem);
}
for(int i=0;i<10;i++)//显示一下排序前的效果
{
lbLog.Items.Add("Name:"+mystr[i].name+", age:"+mystr[i].age.ToString()+", Score:"+mystr[i].value.ToString());
}
lbLog.Items.Add("现在进行排序......");
mystr.Sort();
//mystr.s
for(int i=0;i<10;i++)//显示一下排序后的效果
{
lbLog.Items.Add("Name:"+mystr[i].name+", age:"+mystr[i].age.ToString()+", Score:"+mystr[i].value.ToString());
}
运行结果: