?? rpointerarray.cpp
字號:
// RPointerArray.cpp
//
// Author: hewei
//
// Copyright (c) 2005 CCNIIT. All rights reserved.
//
// version: 1.0
// Date: 2005-10-25
//
// This Example demostrate how to use dynamic array(RArray).
#include "CommonFramework.h"
//定義學生類
class TStudent{
public:
TStudent(const TDes& aSName,TUint aSNo,TInt aScore);
public:
TUint iId;
TBuf<10> iName;
TInt iScore;
};
TStudent::TStudent(const TDes& aSName,TUint aSNo,TInt aScore)
{
iId=aSNo;
iScore=aScore;
iName=aSName;
}
TInt CompareStudentId(const TStudent& stu1,const TStudent& stu2)
{
if(stu1.iId>stu2.iId)
return 1;
else if(stu1.iId==stu2.iId)
return 0;
else
return -1;
}
TInt CompareStudentName(const TStudent& stu1,const TStudent& stu2)
{
return stu1.iName.CompareF(stu2.iName);
}
TInt CompareStudentScore(const TStudent& stu1,const TStudent& stu2)
{
if(stu1.iScore>stu2.iScore)
return 1;
else if(stu1.iScore==stu2.iScore)
return 0;
else
return -1;
}
TBool StudentHaveSameName(const TStudent& stu1,const TStudent& stu2)
{
if(stu1.iName.CompareF(stu2.iName)==0)
return ETrue;
else
return EFalse;
}
void ManageStu()
{
RPointerArray<TStudent> StuArray;
CleanupClosePushL(StuArray);
_LIT(KSTUDENT1,"zhangbing");
_LIT(KSTUDENT2,"hewei");
_LIT(KRETURN,"\n");
//添加
TBuf<10> StuName1(KSTUDENT1);
TBuf<10> StuName2(KSTUDENT2);
TStudent stu1(StuName1,1,90);
TStudent stu2(StuName2,2,80);
StuArray.Append(&stu1);
StuArray.Append(&stu2);
_LIT(KPrompt1,"students in array are:\n");
_LIT(KFORMAT2,"id is %d");
_LIT(KFORMAT3,"score is %d");
console->Printf(KPrompt1);
for(TInt i=0;i<StuArray.Count();i++)
{
console->Printf(StuArray[i]->iName);
console->Printf(KRETURN);
console->Printf(KFORMAT2,StuArray[i]->iId);
console->Printf(KRETURN);
console->Printf(KFORMAT3,StuArray[i]->iScore);
console->Printf(KRETURN);
}
console->Getch();
//修改
_LIT(KSTUDENT3,"LiYong");
StuArray[0]->iName=KSTUDENT3;
_LIT(KPrompt2,"array after modifies are:\n");
console->Printf(KPrompt2);
for( i=0;i<StuArray.Count();i++)
{
console->Printf(StuArray[i]->iName);
console->Printf(KRETURN);
console->Printf(KFORMAT2,StuArray[i]->iId);
console->Printf(KRETURN);
console->Printf(KFORMAT3,StuArray[i]->iScore);
console->Printf(KRETURN);
}
console->Getch();
//查找和排序
TInt findPos;
TStudent S(StuName1,01,90);
findPos=StuArray.Find(&S);
if(findPos!=KErrNotFound)
console->Printf(StuArray[findPos]->iName);
console->Printf(KRETURN);
console->Getch();
TStudent S1(StuName2,0,0);
TIdentityRelation<TStudent> relation(StudentHaveSameName);
findPos=StuArray.Find(&S1,relation);
if(findPos!=KErrNotFound)
console->Printf(StuArray[findPos]->iName);
console->Printf(KRETURN);
console->Getch();
//Sort
TLinearOrder<TStudent> order1(CompareStudentId);
StuArray.Sort(order1);
_LIT(KPrompt3,"sort by Id:\n");
console->Printf(KPrompt3);
for( i=0;i<StuArray.Count();i++)
{
console->Printf(StuArray[i]->iName);
console->Printf(KRETURN);
console->Printf(KFORMAT2,StuArray[i]->iId);
console->Printf(KRETURN);
console->Printf(KFORMAT3,StuArray[i]->iScore);
console->Printf(KRETURN);
}
TLinearOrder<TStudent> order2(CompareStudentName);
StuArray.Sort(order2);
_LIT(KPrompt4,"sort by name:\n");
console->Printf(KPrompt4);
for( i=0;i<StuArray.Count();i++)
{
console->Printf(StuArray[i]->iName);
console->Printf(KRETURN);
console->Printf(KFORMAT2,StuArray[i]->iId);
console->Printf(KRETURN);
console->Printf(KFORMAT3,StuArray[i]->iScore);
console->Printf(KRETURN);
}
_LIT(KPrompt5,"sort by score:\n");
console->Printf(KPrompt5);
TLinearOrder<TStudent> order3(CompareStudentScore);
StuArray.Sort(order3);
for( i=0;i<StuArray.Count();i++)
{
console->Printf(StuArray[i]->iName);
console->Printf(KRETURN);
console->Printf(KFORMAT2,StuArray[i]->iId);
console->Printf(KRETURN);
console->Printf(KFORMAT3,StuArray[i]->iScore);
console->Printf(KRETURN);
}
StuArray.Reset();
CleanupStack::PopAndDestroy();
}
// do the example
LOCAL_C void doExampleL()
{
ManageStu();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -