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
[70496] Re:Re:Re:[질문] 두개의 텍스트 파일에서 중첩된 행은 제거하기
장성호 [nasilso] 2498 읽음    2013-12-11 19:24
문자열의 일부만 짤라서 비교한다구요?

음..
짤라내기 횟수를 줄이는 방향으로 하면

기존 방식으로 하면
a1 리스트에 있는것은 a1.Count 횟수만큼 문자열 짤라내기를 할것이구

a2 리스트에 있는것은 a1.Count  x a2.Count 횟수 만큼 짤라내기를 하게 될것 같네요

전체 짤라내기 횟수  = a1.Count + a1.Count  x a2.Count
-----------------------------------------------------------------------

a2 리스트에 있는것오 파일loading후에 짤라내기를 모두 해서 ..리스트에 담아두고 비교하면
짤라내기 횟수를  a2.Count*(a1.Count -1)  회 만큼 줄일수 있을것입니다.

전체 짤라내기 횟수  = a1.Count + a2.Count

그리고
짤라낸 내용도 HashedStringList에 담아두면 search속도도 빨라지고 효과가 있지 않을까 하는 생각이 듭니다.

그럼..


하안인 님이 쓰신 글 :
: 답변감사합니다.
: 그런데  행과 행을 다 비교하는 것이 아니라 행과 행의 어느 특정값만을 비교하려고 하거든요.
:
: 즉
:
: a1.txt   -> 123,567,999
: a2.txt   ->  444,567,888
:
: 이면 두번째 567 값만을 비교하려고 합니다.
:
: ss = a1->String[0];
: s1 = ss.AnsiPos(",");
: 로 찾아서 처리하려고 합니다. 그런데 시간이 엄청 걸려서...
:
: 행과 행은
:
: StringList를 소트한후 find함수로 찾으면 금방 끝나는데...
:
:
: 장성호 님이 쓰신 글 :
: : 데이타 량이 많으니
: : 시간이 많이 걸릴듯 하네요
: :
: : 아래 소스에서 a2 리스트를  TStringList 가 아닌 THashedStringList 로 사용하지구요
: : for문 돌려서 찾지 말고 IndexOf로 찾아보세요
: :
: :
: :         for(int c = 0; c < a1->Count; c++)
: : 	{
: : 		if(a2->IndexOf(a1->Strings[c])<0)
: : 		{
: : 			a3->Add(a1->Strings[c]);
: : 		}
: : 	}
: : 

: :
: : 비교하는 문자열의 길이에 따라 차이가 많이 나긴 하는데요
: : 약 10배정도에서 많게는 수백배 빨라집니다.
: :
: : THashedStringList  는  #include <IniFiles.hpp> 에 정의되어있습니다.
: :
: : 그럼..
: :
: : 하안인 님이 쓰신 글 :
: : :
: : : 1.txt 와 2.txt 파일두개에서 3.txt 파일을 생성하려고 합니다.
: : : 1.txt의 열의값이 2.txt 의 열의 값이 존재하는 것은 빼고 없는 열만 3.txt 파일로 만들려고 합니다.
: : :
: : : StrList 을 이용해서 비교해서 파일은 만드는 작업을 했는데요.
: : :
: : : 데이타가 1.txt 에 10만개정도 2.txt 에 1~20만개의 데이타를 넣고
: : : 실행을 하니 언제 끝날지 모르겠네요.
: : : 속도가 너무느려서요.
: : :
: : : TStringList *a1, *a2, *a3;
: : : a1 = new TStringList;
: : : a2 = new TStringList;
: : : a3 = new TStringList;
: : : a1->Clear();
: : : a2->Clear();
: : : a3->Clear();
: : :
: : : a1->LoadFromFile("a1.txt");
: : : a2->LoadFromFile("a2.txt");
: : :
: : :
: : : for(b = 0; b < a1->Count; b++)
: : : {
: : :     ino = 0;
: : :      s = a1->Strings[b];
: : :     for(c = 0; c < a2->Count; c++)
: : :     {
: : :          s1 = a2->Strings[c];
: : :          if(s == s1)
: : :              ino = 1;
: : :     }
: : : if(ino == 0)
: : :     a3->Add(s);
: : : }
: : : a3->SaveToFile("a3.txt");
: : :
: : :

+ -

관련 글 리스트
70493 [질문] 두개의 텍스트 파일에서 중첩된 행은 제거하기 하안인 2366 2013/12/11
70494     Re:[질문] 두개의 텍스트 파일에서 중첩된 행은 제거하기 장성호 2421 2013/12/11
70495         Re:Re:[질문] 두개의 텍스트 파일에서 중첩된 행은 제거하기 하안인 2480 2013/12/11
70496             Re:Re:Re:[질문] 두개의 텍스트 파일에서 중첩된 행은 제거하기 장성호 2498 2013/12/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.