⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dynamicarray.cpp

📁 《基于symbian os的手机开发与应用》
💻 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 + -