2010-03-30 3 views
8

VB6의 컬렉션은 각 개체의 키를 추적하므로 키를 사용하여 개체를 찾을 수 있습니다.컬렉션은 VB6에서와 같이 구현됩니까?

컬렉션이 후드 아래에 일종의 해시 테이블로 구현된다는 의미입니까? 컬렉션에서 동일한 키를 가진 여러 항목을 가질 수 있다는 것을 알았습니다. 따라서 일부 정렬이 있습니다.

누구나 VB6 컬렉션이 나타내는 형식 데이터 구조를 아십니까?

+5

VB6 컬렉션에서 동일한 키를 가진 항목을 여러 개 가질 수는 없습니다 **. – raven

+0

테스트 해 보셨습니까? 나는 이것을 내일 시험 할 것이다. 나는 같은 열쇠를 더하는 것이 문제가 아니라고 생각했다. –

+1

NO 키를 사용하여 여러 항목을 추가하는 것은 좋지만 키는 대소 문자를 구분하지 않고 고유합니다 (Option Compare 선언과 관계 없음). –

답변

7

내가 아는 한, VBA Collection은 Integer 인덱스 및 For Each ... Next에서 사용하는 연결된 목록과 키로 사용되는 해시 테이블로 구현됩니다. 레이븐이 말했듯이, 당신은 같은 열쇠를 가진 여러 아이템을 가질 수 없습니다.

편집 :

@MarkJ : 하드 코어 Visual Basic의 2 에드 : 나는 이것을 위해 인용의 나 준해야한다. Microsoft Press에서 1997 ISBN 출판 브루스 맥키 니에 의해 1-57231-422-2

지수 :

페이지 191 - 컬렉션 클래스

는 "간단히 말해

는 컬렉션 클래스는 souped-이다 CList 클래스의 C++ 버전 [...]. 실제로 CList를 이중 링크 목록으로 강화하고 몇 가지 기능을 추가하면 (그리고 아마도 해시 테이블을 사용하여 문자열 키를 조회 할 수 있습니다.) Visual Basic에서 제공되는 것과 비슷한 컬렉션 클래스가 있어야합니다. "

페이지 197 - 성능은

"그리고는, 사실, 나는이 컬렉션은 이중 (인덱싱을 지원하기 위해 추가 기능) 목록을 연결되어 있음을 비주얼 베이직 개발자 말씀 드리 지요."

이제 McKinney는 프로그래머보다 언론인이었으며 개발자는 아니 었습니다. 그러나 그는 Microsoft에서 근무했으며 VB 및 VBA 팀과 연락합니다. 그의 설명이 나를 위해 일한다.

덧붙여 이중 링크 된 목록을 사용하는 이유는 컬렉션의 처음과 끝에 모두 항목을 삽입하는 것이 효율적이기 때문입니다.

+0

그러면 동일한 항목 객체에 대한 참조를 보유하고있는 연결된 목록과 해시 테이블이 모두 나란히 있다는 의미입니까? 그리고 반복하는 방법에 따라 필요에 따라 다른 데이터 구조가 사용됩니까? –

+0

마크는 콜렉션에 액세스하는 코드 인터페이스를 설명합니다. 우리는 후드 아래가 기능을 지원하는 것이어야한다는 것을 추론 할 수 있습니다. 연결된 목록 및 해시 테이블을 사용할 수도 있지만 그 사실을 알 수는 없습니다. – MarkJ

+0

@ MarkJ : 누군가가 구현에 관한 추측을 정리하는 리소스를 향해 나를 가리킬 수 있기를 바랬습니다. –

관련 문제