|
std::list 의 sort , unique 기능
VCL로도 가능하네요
샘플..
void __fastcall TForm1::Button4Click(TObject *Sender)
{
// String sStr=Edit1->Text;
String sStr="문자열1 문자열2 ans 문자열1 문자열3 문자열2 문자열2 ";
TStringList *sLst=new TStringList;
sLst->Duplicates=dupIgnore ;//dupAccept ;
sLst->Sorted=true;
sLst->Delimiter=' ';
sLst->DelimitedText=sStr;
Memo1->Lines->Assign(sLst);
delete sLst;
}
//---------------------------------------------------------------------------
그럼..
슬.강슬기 님이 쓰신 글 :
: 저도 비슷한 생각을 했네요...
: STL을 사용했더니.. 소스가 확실히 짧아졌군요
:
: std::list<String> strList;
:
: ...// 데이터 삽입
:
: strList.sort();
: strList.unique(); // 중복 제거
:
: 더 좋은 방법이 있을 듯도 합니다.
:
: 어떨런지...
:
: 이용태 님이 쓰신 글 :
: : 곰곰히 생각을 하다가 아이디어가 떠올라서 코딩해봤습니다..
: :
: : 배열이 아닌 벡터를 이용해서 만들어봤습니다.
: :
: : 소스 보시면 알겠지만...
: :
: : 원본 벡터(vA)의 값을 일일히 비교하여 중복되는 것이 없을 경우 새로운 벡터(vB)에 저장하여 출력하였습니다.
: :
: : 이 문제에 대해 답변 주신분들 감사드립니다..
: :
: :
: :
: : vector<AnsiString> vA;
: :
: : for(int i=0;i<MDIChildCount;i++)
: : {
: : pChild = (TFormChildCscan*)MDIChildren[i];
: :
: : tempName.cat_sprintf("%s", pChild->sSP.flNm);
: :
: : tempName = ExtractFileName(tempName);
: :
: : vA.push_back(tempName);
: : }
: :
: : vector<AnsiString> vB;
: :
: : vB.push_back(vA[0]);
: :
: : bool cons = false;
: : for(int i = 1; i < vA.size(); i++)
: : {
: : for(int j = 0; j < vB.size(); j++)
: : {
: : if(vA[i] == vB[j])
: : {
: : cons = true;
: : break;
: : }
: : }
: :
: : if(cons == true)
: : {
: : cons = false;
: : continue;
: : }
: :
: : vB.push_back(vA[i]);
: :
: : }
: :
: : for(int i = 0; i < vB.size(); i++)
: : {
: : cxComboChildList->Properties->Items->Add(vB[i]);
: : }
: :
: :
: :
: :
: : 이용태 님이 쓰신 글 :
: : : 제가 예를 잘못 들었나 봅니다.
: : :
: : : 문자 배열이 아니고요... 문자열 배열입니다.
: : :
: : :
: : : 문자열1 = "우리나라"
: : : 문자열2 = "대한민국"
: : : 문자열3 = "단일민족"
: : :
: : : ------- ------- ------- ------- ------- -------
: : : 문자열1 문자열2 문자열1 문자열3 문자열2 문자열2
: : : ------- ------- ------- ------- ------- -------
: : :
: : : 이것을 중복된 값을 제외하여 다음과 같이 만들고 싶습니다.
: : :
: : : ------- ------- -------
: : : 문자열1 문자열2 문자열3
: : : ------- ------- -------
: : :
: : : 방법 아시는 분 알려주십시요...
: : :
: : :
: : : 김상면 님이 쓰신 글 :
: : : : 아주 기초적인 질문이라 대충 알고리즘만 적습니다.
: : : :
: : : : char src[9] = "aaabbacbc";
: : : : int dst[9] = {0,};
: : : : int i = 0;
: : : :
: : : : while (i<10)
: : : : dst[src[i++] - 'a']++;
: : : :
: : : : i = 0;
: : : : while (i < 10)
: : : : { if (dst[i])
: : : : cout << char(i + 'a');
: : : : i++;
: : : : }
: : : :
: : : : 실행 파일을 만들려면 좀 손을 봐야 하지만 알고리즘을 이해하는데는 문제가 없으리라 생각합니다.
: : : : 그럼
: : : :
: : : :
: : : : 이용태 님이 쓰신 글 :
: : : : : 다음과 같은 배열이 있습니다.
: : : : :
: : : : : char a[9];
: : : : : --- --- --- --- --- --- --- --- ---
: : : : : a a a b b a c b c
: : : : : --- --- --- --- --- --- --- --- ---
: : : : :
: : : : : 이 배열에서 중복된 값을 제외한 새로운 배열을 만들고 싶습니다.
: : : : :
: : : : : 즉.. 요렇게 말이죠..
: : : : : --- --- ---
: : : : : a b c
: : : : : --- --- ---
: : : : :
: : : : : 머리를 계속 굴려보는데... 퍼뜩이는 아이디어가 떠오르지 않습니다...;;;
: : : : :
: : : : : 아시는 분... 답변 부탁드립니다...
|