2010-12-12 8 views
0

비행 제어 게임과 비슷한 것을 구현하려고합니다. 생성되고 무작위로 제거되는 평면을 나타내는 개체 집합이 있습니다. 그러면 개별 비행기가 닿아 응답 할 수 있습니다. 모델은 무언가가 손댈 때 매개 변수로서 평면 인덱스를 취해야합니다.이러한 개체를 저장하기 위해 어떤 구조를 사용해야합니까?

내 스토리지 요구 사항은 다음과 같습니다

  1. 는 모든 요소를 ​​통해 빠른 반복을 필요
    • 인덱스

      에 의해 신속하고 항목을 볼 필요가 빠른 삽입/삭제
    • 을 필요가있는 무엇을해야 나는 사용한다? NSMutableArray, NSMutableSet?

    • 각 개체를 두 위치에 저장해야합니까? (예 : 빠른 반복을 위해 설정, 빠른 조회를 위해 배열)?

답변

1

NSMutableArray은 인덱스로만 조회하려는 경우에 충분합니다. 문제는 O (n)을 취하는 삭제 일 수 있습니다. 인덱스 지속성이 필요하지 않은 경우 삭제 된 항목에 마지막 항목을 놓고 1을 줄임으로써 O (1)에서 삭제할 수 있습니다.

이 경우 두 곳에서 저장하는 것이 느릴 수 있습니다. 속도를 찾는데 어떤 이점도 가져 오지 않지만 두 개의 컨테이너를 유지해야 할 것입니다.

+0

의견을 말씀드립니다. 'NSMutableArray'는 당분간 괜찮을 것입니다. 또한 NSMutableArray는 표준 배열이 아니므로 표준 컴퓨터 과학 지식을 맹목적으로 적용해서는 안됩니다. http://ridiculousfish.com/blog/archives/2005/12/23/array/를 참조하십시오. – Yuji

+1

NSMutableArray가 충분히 빠르지 않으면 컨테이너를 나중에 바꿀 수 있습니다. 프로그램의 아주 작은 하위 집합에 컨테이너의 세부 정보를 유지하는 것이 중요하므로 나중에 구현을 쉽게 바꿀 수 있습니다. – Yuji

+0

@Yuji 좋은 충고입니다, 감사합니다. – Robert

0

2 개 장소에 저장하는 것이 어리석은 것처럼 보입니다. 배열은 o (n) 반복으로, o (1)은 인덱스로 검색하여 괜찮을 것입니다. 나는 삭제 또는 삽입 속도를 알기 위해 objective-c에 익숙하지 않지만 일부 시스템 레벨 어레이 복사 기능을 사용하면 둘 다 빠르지 만 빠르다.

관련 문제