2012-06-28 6 views
-1

SGI의 hash_map 및 C++ 언어가 처음이므로 부담해야합니다. 기본 hash_map을 초기화하고 삽입하고 제거하는 방법을 알아 내려고합니다.SGI hash_map : 기본 문의

나는 등의 hash_map을 선언 :

Sgi::hash_map<int, Process*> ProcessManager::ListProcesses; 

내가 int 값으로 해시 및 Process 클래스의 객체에 대한 포인터를 저장하려는.

그러나 SGI 설명서는 매우 모호하고 도움이되지 않습니다. 나는 hash_map 파일을 통해 읽는 중이지만 많은 것을 이해하지는 못합니다. 누군가 SGI hash_map을 삽입하고 지우는 적절한 방법을 보여줄 수 있습니까?

명확하게 : 내가 찾고있는 것은 배워야 할 기본 예입니다. 제발 고마워요!

+0

그래서 BASIC 또는 C++이 마음을 사로 잡습니다. –

+2

C++에는 자체 버전의 해시 맵 - [std :: unordered_map <>'] (http://en.cppreference.com/w/cpp/container/unordered_map)이 있다는 것을 알고 있습니까? 왜 SGI를 사용합니까? – ildjarn

답변

-1

다음을 수행 할 수 있습니다. ildjarn은 주석으로

Sgi::hash_map<int, Process*> ListProcesses; 

Process *p1; // Initialize these 
Process *p2; 

//Insertion 
ListProcesses[10] = p1; // new element inserted 
ListProcesses[20] = p2; // new element inserted 

//Erase 
ListProcesses.erase(20); //(20,p2) deleted 

, 당신은 SGI 하나 대신 std::unordered_map<>를 사용할 수 있습니다.

+0

고마워요! 너무 많은 도움. – user1034868

1

SGI docs의 예는 무엇이 잘못 되었나요? hash_map을 선언하는 방법과 값을 추가하는 방법을 명확하게 보여줍니다. 변수 months

hash_map<const char*, int, hash<const char*>, eqstr> months; 

months["january"] = 31; 
months["february"] = 28; 
months["march"] = 31; 

유형 const char*의 키를 사용하여 입력 int의 값으로 매핑하는 hash_map, 당신은 평등에 대한 포인터 값을 비교하여 키를 비교하지 않기 때문에, 그것은 정의를 사용 동등한 functoreqstr이라고 불리며 두 개의 문자열이 동일한 내용을 가지고 있는지 여부를 나타냅니다.

지우려면 erase 회원 기능을 사용하십시오.

size_type erase(const key_type& k) 키가 k 인 요소를 지 웁니다.

는 그래서는 다음과 같습니다

months.erase("march"); 

SGI의 워드 프로세서는 모호한 거리가 멀다.

+0

이렇게 : hash_map , eqstr> 개월; 개월은 해시 테이블의 이름입니까? 그리고 우리는 몇 달을 삽입하여 삽입하고 싶습니다. 그리고 31은 (키)에 의해 해싱되는 숫자입니까, 아니면 데이터로 저장되는 것입니까? – user1034868

+3

예. SGI 문서 나'hash_map '이 아닌 기본적인 C++ 문법으로 고생하는 것처럼 보입니다. –