V
값이 인 i->V[i]
인디 시아를 통해 액세스 할 수 있습니다. V[i]
값 (예 : 큰 값에서 작은 값)에 따라이 값을 반복해야합니다. 또한 원래의 indecies I_1, I2,..., I_N
의 하위 집합이 있고 동일한 순서 (큰에서 작은)로 해당 값에 액세스해야합니다.집합의 정렬 된 하위 집합에 액세스하기위한 데이터 구조 C++
올바른 데이터 구조와 절차는 무엇입니까? 나는이 문제로 얼마 동안 고생하여 도움을받을 수있었습니다.
값 (V[i]
)은 항상 업데이트되며 액세스는 항상 인덱스 i
입니다. set
값을 나타내는 데 사용한 경우 업데이트 된 요소를 제거하고 힌트가있는 위치에 다시 삽입해야합니다 (매우 이전에 설정된 위치에 가까울 가능성이 큽니다). 하지만 세트에는 V
만 포함되며 i를 통해 요소에 액세스 할 수 없습니다. 반면에 Map
또는 Multimap
요소는 V
이 아닌 I
으로 정렬됩니다. 내가 등 포인터와 세트의 조합을 사용할 필요하지만 난 그것을 알아낼 수 없습니다 것으로 보인다
... 당신 말이 맞아
답장을 보내 주셔서 감사합니다. 그러나 귀하의 표기법과 제 표기법 간의 매핑에 대해 다소 혼란 스럽습니다. 귀하의'SomeKey'는 내 인덱스 또는 값에 해당합니까? 왜냐하면 그것들이 인덱스라면, 값보다는 인덱스에 의해 정렬되고, 값이'V [i]'이면 객체 ('SomeObjects')는 무엇입니까? 그러나'map' 대신'V'를 포함하는'set'을 사용합니다 - 당신이 제안한 것처럼. 이 경우 인덱스는 어떻게됩니까? – Siamak
@Siamak indexedObjects [index]는 객체에 대한 반복자를 제공한다는 사실에 의해 암시됩니다. 'SomeKey'와의 혼란만큼 -'std : map'을보세요. 아니요, 그것은 귀하의 색인이 아닙니다. 그것은 당신이 당신의 물건을 분류하기를 원하는 속성 일 것입니다. – David
값'V'로 정렬 했으므로'map'은 필요 없지만'indexedObjects'를 사용하여 액세스 할 수있는'set' ('std :: set')입니다. 그러나 이것은 정렬 된 순서로 값의 하위 집합 (indexedObject의 하위 집합으로 인덱싱 됨)을 반복 할 수 없습니다. 권리?'set' 값을 반복 할지라도'seted 자체에 대해 반복 할 수있는'indexedObject'를 사용할 수는 없습니다. –
Siamak