2014-08-30 2 views
0

개체 목록에 도달하는 데 매우 빠른 방법을 만들어야하며 개체 배열 배열을 사용할 수 있다고 생각합니다. 아마도 다른 방법으로이 작업을 수행 할 수 있으므로 대체 구현을 자유롭게 권장 할 수 있습니다.개체 배열 배열

특정 값으로 그룹화해야하는 개체 그룹이 있습니다. 예를 들어 숫자 10으로 액세스해야하는 개체 그룹이 있습니다. 따라서 숫자 10을 사용하여 개체 그룹을 찾은 다음 각 개체에 대해 반복하여 각 개체에서 작업을 수행합니다.

10 - Object1, Object2, Object3 
11 - Object4, Object5 

이러한 개체에 매우 빠르게 액세스해야하므로 개체 배열을 생각하고있었습니다. 나는 벡터와지도를 조사했지만 완전히 이해하지는 못했다.

저는 g ++ 컴파일러에서 나무 딸기 파이에 C++을 사용하고 있습니다.

귀하의 의견을 알려주십시오. 미리 감사드립니다.

+1

당신이 원하는 마십시오 같은'표준 : '또는'표준 : unordered_multimap '과 multimap로? – ikh

+0

'multimap'이 사용되면 키가 반복 될 수 있습니다.이 경우 키의 모든 객체에 대해'sizeof (key)'가 낭비됩니다. 만약 키가 범위 내에 있다면 당신은'std :: vector >>'을 사용할 수있다. (외부 벡터의 모든 인덱스에서 그 인덱스의 객체가 될 것이고, 예를 들어 범위가 1000-2000이면 인덱스를 건너 뛰고 키가 퍼지면'std :: map >'을 사용하고 오브젝트 컬렉션 검색은 ** O (로그 키) * * 및 개체 반복이 캐시에 친숙합니다. – NetVipeC

답변

0

개체 배열 배열은 종종 행렬이라고도합니다. 행렬을 격자로 상상할 수 있습니다. 이것은 모든 객체에 액세스하는 가장 빠르고 가장 기본적인 방법입니다. 행렬을 생성하려면 아래와 같이 선언하십시오.

int matrix[10][10]; 

지금 매트릭스는 루프

에 대한 간단한 빠른에 의해
for(int i = 0; i<matrix[].length;i++){ 
    matrix[4] = _________ 
} 

이를 그룹 5에 액세스 할 수 있습니다 것입니다 작성되는 오브젝트 이제

for(int row = 0; row<10;row++){ 
    for(int column = 0; column<10;column++){ 
      matrix[row][column] = Obj(); 
    } 
} 

과 행렬의 각 자리를 채우기 당신이하고있는 일을 시도하는 가장 빠르고 쉬운 방법입니다. 이게 도움이 되길 바란다.

+0

제안을 주셔서 감사합니다, 그러나 시도한 및 int 배열에 개체를 추가하려고했기 때문에이 작동하지 않습니다. 뭔가 잘못하고 있습니까? matrix [row] [ column] = myObj(); – Edd

1
  1. 개체 그룹에 std::set을 사용하십시오.

  2. std::map을 사용하여 해당 그룹을 입력하십시오.

이 작동합니다 :

std::map<int, std::set<Object>> objects;