C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[53963] Re:[질문[ 배열의 크기를 동적으로 잡을수 있나요.
장성호 [nasilso] 1265 읽음    2008-07-17 12:03
stl 의 vector 나 list , vcl의 TList 등으로도 가능하구요

아래  처럼  realloc을 써서 Dynamic Array를 구현할수 있습니다.

class DIntArray
{
private:
  int  iRealCnt;
  int  iCnt;
  int *IntArr;

public:
  DIntArray()
  {
    iRealCnt=0;
    iCnt=0;
    IntArr=NULL;
  }
  DIntArray(int IniCount)
  {
    iCnt=0;
    iRealCnt=IniCount;

    IntArr=(int *)ReallocMemory(IntArr,(iRealCnt*4));
    // 또는 IntArr=(int *)realloc(IntArr,(iRealCnt*4));
  }
  ~DIntArray()
  {
     FreeMemory(IntArr);
//  또는  free(IntArr);
  }

  void __fastcall Add(int val)
  {
    if(iCnt>=iRealCnt)
    {
      iRealCnt+=100; //ReallocMemory 호출이 자주 일어나지  않도록..
      IntArr=(int *)ReallocMemory(IntArr,(iRealCnt*4));
      //또는 IntArr=(int *)realloc(IntArr,(iRealCnt*4));
    }
    IntArr[iCnt]=val;
    iCnt++;

  }
  int __fastcall Get(int idx)
  {
    if(idx<0 || idx>=iCnt)
    {
      throw Exception("Out of Index");
    }
    return IntArr[idx];
  }
  void __fastcall Set(int idx,int Value)
  {
    if(idx<0 || idx>=iCnt)
    {
      throw Exception("Out of Index");
    }
    IntArr[idx]=Value;
  }
  __property int Count = {read=iCnt};

};
DIntArray DArr;

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  int val=StrToInt(Edit1->Text);
  DArr.Add(val);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  Memo1->Lines->Clear();
  for(int i=0;iLines->Add(IntToStr(DArr.Get(i)));
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
  DArr.Set(10,10);  
}
//---------------------------------------------------------------------------




그럼...

궁금한 사람 님이 쓰신 글 :
: 시험을 하면서 0.1초 마다 값을 저장한다고 합니다.
: 그런데 시험을 하는시간이 들쑥날쑥합니다.
:
: 10초, 1분, 3분 10분 등등....
:
: 시험후 값을 배열에 저장해야 하는데... 무턱대고 배열을 크게 잡을수도 없고.... 그렇다고 너무 작게
: 잡으면 배열을 크기를 오버하고...

: 포인터를 사용해야 하나요...

+ -

관련 글 리스트
53961 [질문[ 배열의 크기를 동적으로 잡을수 있나요. 궁금한 사람 890 2008/07/17
53971     Re:[질문[ 배열의 크기를 동적으로 잡을수 있나요. smleelms 1183 2008/07/17
53974         Re:Re:[질문[ 배열의 크기를 동적으로 잡을수 있나요. 1 1080 2008/07/17
53976             Re:Re:Re:[질문[ 배열의 크기를 동적으로 잡을수 있나요. smleelms 1159 2008/07/17
53963     Re:[질문[ 배열의 크기를 동적으로 잡을수 있나요. 장성호 1265 2008/07/17
53962     Re:[질문[ 배열의 크기를 동적으로 잡을수 있나요. 이현진 1057 2008/07/17
53964         Re:Re:[질문[ 배열의 크기를 동적으로 잡을수 있나요. 1 1312 2008/07/17
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.