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
[37962] Re:Re:Re:Re:[질문]자료구조에 대하여(STL)
만복대.산수유 [origin] 1041 읽음    2004-11-09 20:51
smleelms 님이 쓰신 글 :
: 헉스... 저는 저장하는 데이터가 많지 않아서.. 그냥 벡터크기만큼 for문으로 돌려서 찾습니다.
: 그리고 벡터에 search관련 method가 있는지는 잘 모르겠습니다..
:
: 전혀 도움이 안된듯...
:
: 하안인 님이 쓰신 글 :
: : smleelms 님이 쓰신 글 :
: : : 저장하실려고 하는 데이터를 구조체로 정의하신후 vector나 list의 데이터형을 정의하신 구조체로 지정하고,
: : : 이후 정의된 구조체를 그냥 일반 데이터형처럼 vector나 list에 넣고, 빼고, 읽고 하시면 됩니다.
: : :
: : : 그럼...
: :
: : 감사합니다.
: :
: : struct ss{
: : int id;
: : String meth1;
: : String meth2;
: : ...}
: :
: : vector <ss> vdata;
: : ss data;
: : data.id = 2001;
: : data.meth1 = "test";
: : data.meth2="test2";
: : vdata.push_back(data);
: :
: : 이렇게 저장하고
: : id가 3000인것을 검색하려면 어떻게 하나요.


struct ss
{
int id;
String meth1;
String meth2;
bool operator == (int _id) const //stl  find()로 찾을 때 필요
{
  return (_id==id);
}
bool operator < (const ss& other) const //연관 컨테이너에서 정렬 시 필요
{
  return (id<other.id);
}
};

struct SearchSS:public binary_function<ss,int,bool> //find_if()로 찾을 때 필요
{
bool operator ()(const ss& s,int id)
{
  return (s.id==id);
}
};

//vector 사용
void __fastcall TForm1::btnVectorClick(TObject *Sender)
{
vector<ss> vdata;
ss data;
data.id = 2001;
data.meth1 = "test2001";
data.meth2="test2001_2";
vdata.push_back(data);
data.id = 3000;
data.meth1 = "test3000";
data.meth2="test3000_2";
vdata.push_back(data);
data.id = 2002;
data.meth1 = "test2002";
data.meth2="test2002_2";
vdata.push_back(data);

String temp;
vector<ss>::iterator it = find(vdata.begin(),vdata.end(),3000);
if(it!=vdata.end())
{
  temp.printf("id:%d meth1:%s meth2:%s",it->id,it->meth1,it->meth2);
  Memo1->Lines->Add(temp);
}
it = find_if(vdata.begin(),vdata.end(),bind2nd(SearchSS(),3000));
if(it!=vdata.end())
{
  temp.printf("id:%d meth1:%s meth2:%s",it->id,it->meth1,it->meth2);
  Memo1->Lines->Add(temp);
}
}
//---------------------------------------------------------------------------

//set 사용
void __fastcall TForm1::btnSetClick(TObject *Sender)
{
set<ss> vdata;
ss data;
data.id = 2001;
data.meth1 = "test2001";
data.meth2="test2001_2";
vdata.insert(data);
data.id = 3000;
data.meth1 = "test3000";
data.meth2="test3000_2";
vdata.insert(data);
data.id = 2002;
data.meth1 = "test2002";
data.meth2="test2002_2";
vdata.insert(data);

String temp;
set<ss>::iterator it = vdata.find(data);
if(it!=vdata.end())
{
  temp.printf("id:%d meth1:%s meth2:%s",it->id,it->meth1,it->meth2);
  Memo1->Lines->Add(temp);
}
it = find(vdata.begin(),vdata.end(),3000);
if(it!=vdata.end())
{
  temp.printf("id:%d meth1:%s meth2:%s",it->id,it->meth1,it->meth2);
  Memo1->Lines->Add(temp);
}
it = find_if(vdata.begin(),vdata.end(),bind2nd(SearchSS(),3000));
if(it!=vdata.end())
{
  temp.printf("id:%d meth1:%s meth2:%s",it->id,it->meth1,it->meth2);
  Memo1->Lines->Add(temp);
}
}

//map사용
//---------------------------------------------------------------------------
void __fastcall TForm1::btnMapClick(TObject *Sender)
{
map<int,ss> vdata;
typedef map<int,ss>::value_type value_type;
ss data;
data.id = 2001;
data.meth1 = "test2001";
data.meth2="test2001_2";
vdata.insert(value_type(data.id,data));
data.id = 3000;
data.meth1 = "test3000";
data.meth2="test3000_2";
vdata.insert(value_type(data.id,data));
data.id = 2002;
data.meth1 = "test2002";
data.meth2="test2002_2";
vdata.insert(value_type(data.id,data));

String temp;
map<int,ss>::iterator it = vdata.find(3000);
if(it!=vdata.end())
{
  temp.printf("id:%d meth1:%s meth2:%s",it->second.id,it->second.meth1,it->second.meth2);
  Memo1->Lines->Add(temp);
}
}

+ -

관련 글 리스트
37954 [질문]자료구조에 대하여(STL) 하안인 912 2004/11/09
37957     Re:[질문]자료구조에 대하여(STL) smleelms 965 2004/11/09
37958         Re:Re:[질문]자료구조에 대하여(STL) 하안인 886 2004/11/09
37961             Re:Re:Re:[질문]자료구조에 대하여(STL) smleelms 868 2004/11/09
37962                 Re:Re:Re:Re:[질문]자료구조에 대하여(STL) 만복대.산수유 1041 2004/11/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.