2010-08-11 7 views
1
Diff function on two arrays (or how to turn Old into New) 

Example 
One[]={2,3,4,5,6,7} 
Two[]={1,2,3,5,5,5,9} 

Example Result 
Diff: insert 1 into One[0], One[]={1,2,3,4,5,6,7} 
Diff: delete 4 from One[3], One[]={1,2,3,5,6,7} 
Diff: modify 6 into 5 in One[4], One[]={1,2,3,5,5,7} 
Diff: modify 7 into 5 in One[5], One[]={1,2,3,5,5,5} 
Diff: append 9 into One[6], One[]={1,2,3,5,5,5,9} 

Need code in c++/mfc/stl/c, Thanks. 
+1

복사 내용을 다시 할당 할 수 있다면 왜 그렇게 원하는가요? 일반적으로 더 빠를 것입니다. 여기에 높은 수준의 그림이 무엇입니까? –

+0

데이터베이스 테이블 스마트 업데이트의 개요를 보여주는 간단한 예입니다. 테이블에 넣을 배열이 여러 개 있습니다. 원래 배열과 새로운 배열을 가지고 있고, 이미 필요한 행을 삽입하고 변경해야하는 행을 제거하고 추가해야하는 행만 삭제하여 데이터베이스를 업데이트해야합니다. – jmc

답변

1

문자열 일치 알고리즘이 필요합니다. 일반적으로 동적 프로그래밍을 사용하여 구현됩니다 (here 참조).

직접 구현하는 대신 diff를 수행하는 라이브러리를 사용하는 것이 좋습니다.

1

일반적으로 정수 대신 문자로 처리되지만 일반적으로 Levenstein 거리를 계산하기위한 일반적인 알고리즘은 일반적으로 적용되는 곳에서 잘 작동합니다.

0

저는 C++의 diff 라이브러리 개발자입니다.

http://code.google.com/p/dtl-cpp/

내 DIFF 라이브러리를 사용하여, 두 개의 서열 사이의 차이를 산출 할 수있다.

사용 방법은 examples/intdiff.cpp를 참조하십시오.

관련 문제