?? dynamicarray.cpp
字號:
// DynamicArray.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.
#include "CommonFramework.h"
//定義學生類
class TStudent{
public:
TStudent(const TDes& aSName,TUint aSNo,TReal32 aScore);
private:
//void SetStuNameL(const TDesC& aSName);
public:
TUint iId;
TBuf<10> iName;
TReal32 iScore;
};
TStudent::TStudent(const TDes& aSName,TUint aSNo,TReal32 aScore)
{
iId=aSNo;
iScore=aScore;
iName=aSName;
}
void ManageStu()
{
CArrayFixFlat<TStudent>* StuArrayFlat;
StuArrayFlat=new (ELeave) CArrayFixFlat<TStudent>(5);
_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);
StuArrayFlat->AppendL(stu1);
StuArrayFlat->AppendL(stu2);
_LIT(KFORMAT2,"id is %d");
_LIT(KFORMAT3,"score is %f");
for(TInt i=0;i<StuArrayFlat->Count();i++)
{
console->Printf((*StuArrayFlat)[i].iName);
console->Printf(KRETURN);
console->Printf(KFORMAT2,(*StuArrayFlat)[i].iId);
console->Printf(KRETURN);
console->Printf(KFORMAT3,(*StuArrayFlat)[i].iScore);
console->Printf(KRETURN);
}
console->Getch();
//刪除
StuArrayFlat->Delete(0);
for( i=0;i<StuArrayFlat->Count();i++)
{
console->Printf((*StuArrayFlat)[i].iName);
console->Printf(KRETURN);
console->Printf(KFORMAT2,(*StuArrayFlat)[i].iId);
console->Printf(KRETURN);
console->Printf(KFORMAT3,(*StuArrayFlat)[i].iScore);
console->Printf(KRETURN);
}
console->Getch();
//修改
_LIT(KSTUDENT3,"LiYong");
(*StuArrayFlat)[0].iName=KSTUDENT3;
for( i=0;i<StuArrayFlat->Count();i++)
{
console->Printf((*StuArrayFlat)[i].iName);
console->Printf(KRETURN);
console->Printf(KFORMAT2,(*StuArrayFlat)[i].iId);
console->Printf(KRETURN);
console->Printf(KFORMAT3,(*StuArrayFlat)[i].iScore);
console->Printf(KRETURN);
}
console->Getch();
//查找和排序
TKeyArrayFix nameKey(_FOFF(TStudent,iName),ECmpNormal);
TInt findPos;
TStudent S(StuName1,01,90);
if(StuArrayFlat->Find(S,nameKey,findPos)!=KErrNotFound)
console->Printf((*StuArrayFlat)[findPos-1].iName);
console->Getch();
TKeyArrayFix ScoreKey(_FOFF(TStudent,iScore),ECmpTInt32);
User::LeaveIfError(StuArrayFlat->Sort(ScoreKey));
for( i=0;i<StuArrayFlat->Count();i++)
{
console->Printf((*StuArrayFlat)[i].iName);
console->Printf(KRETURN);
console->Printf(KFORMAT2,(*StuArrayFlat)[i].iId);
console->Printf(KRETURN);
console->Printf(KFORMAT3,(*StuArrayFlat)[i].iScore);
console->Printf(KRETURN);
}
delete StuArrayFlat;
}
///////////////////////////////////////////////////////////////////////////
//
//
// Store student information using CArrayFixSeg
//
//
////////////////////////////////////////////////////////////////////////////
void ManageStuBySeg()
{
CArrayFixSeg<TStudent>* StuArraySeg;
StuArraySeg=new (ELeave) CArrayFixSeg<TStudent>(5);
_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);
StuArraySeg->AppendL(stu1);
StuArraySeg->AppendL(stu2);
_LIT(KFORMAT2,"id is %d");
_LIT(KFORMAT3,"score is %f");
for(TInt i=0;i<StuArraySeg->Count();i++)
{
console->Printf(StuArraySeg->At(i).iName);
console->Printf(KRETURN);
console->Printf(KFORMAT2,StuArraySeg->At(i).iId);
console->Printf(KRETURN);
console->Printf(KFORMAT3,StuArraySeg->At(i).iScore);
console->Printf(KRETURN);
}
console->Getch();
//刪除
StuArraySeg->Delete(0);
for( i=0;i<StuArraySeg->Count();i++)
{
console->Printf(StuArraySeg->At(i).iName);
console->Printf(KRETURN);
console->Printf(KFORMAT2,(*StuArraySeg)[i].iId);
console->Printf(KRETURN);
console->Printf(KFORMAT3,StuArraySeg->At(i).iScore);
console->Printf(KRETURN);
}
console->Getch();
//修改
_LIT(KSTUDENT3,"LiYong");
(*StuArraySeg)[0].iName=KSTUDENT3;
for( i=0;i<StuArraySeg->Count();i++)
{
console->Printf(StuArraySeg->At(i).iName);
console->Printf(KRETURN);
console->Printf(KFORMAT2,StuArraySeg->At(i).iId);
console->Printf(KRETURN);
console->Printf(KFORMAT3,StuArraySeg->At(i).iScore);
console->Printf(KRETURN);
}
console->Getch();
//查找
TKeyArrayFix nameKey(_FOFF(TStudent,iName),ECmpNormal);
TInt findPos;
TStudent S(StuName1,01,90);
if(StuArraySeg->Find(S,nameKey,findPos)!=KErrNotFound)
console->Printf((*StuArraySeg)[findPos-1].iName);
console->Getch();
//排序
TKeyArrayFix ScoreKey(_FOFF(TStudent,iScore),ECmpTInt32);
User::LeaveIfError(StuArraySeg->Sort(nameKey));
for( i=0;i<StuArraySeg->Count();i++)
{
console->Printf(StuArraySeg->At(i).iName);
console->Printf(KRETURN);
console->Printf(KFORMAT2,StuArraySeg->At(i).iId);
console->Printf(KRETURN);
console->Printf(KFORMAT3,StuArraySeg->At(i).iScore);
console->Printf(KRETURN);
}
delete StuArraySeg;
}
// do the example
LOCAL_C void doExampleL()
{
ManageStu();
ManageStuBySeg();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -