2011-10-05 2 views
6

가정하자 나는 다음과 같은 사용자 구조체가 :저장 요소

struct User { 
    string userId; 
    UserType userType; // UserType is just an enumeration 
    string hostName; 
    string ipAddress; 
    //and more other attributes will be added here 

}; 

을 나는 너무 높은 확장 할 수 있습니다 (5^10의 주위에 사용자를 사용자 레코드의 컬렉션을 저장해야). unordered_set 또는 unordered_map으로 저장하면 성능이 향상 될까요? Unordered_set은 기술적으로 HashSet과 같고 unordered_map은 HashMap과 동일 합니다만, 그렇습니까? 요소 수를 늘리면 삽입 및 삭제가 매우 느려지므로 정규 세트 (순서대로)를 사용하는 것은 옵션이 아닙니다.

unordered_map <string, User> userRecords; // string is the user ID. 

unordered_set <User> userRecords; 

또는

나는 그것이 삽입, 삭제의 측면에서 매우 빠른 것으로, 그 userId를하여 특정 사용자 개체에 액세스해야합니다.

답변

7

나는 여분의 작업없이 언제든지 사용자 아이디를 얻을 수 있기 때문에 unordered_set 나는이 기능을 가지고 있지 않지만 사용자를 얻을 수 있기 때문에 나는 unordered_map을 선택할 것이다.

위에서 언급 한 작업의 속도는 거의 동일합니다.

6

unordered_set<>은 사용자 ID로 사용자에 쉽게 액세스 할 수 없으므로 unordered_map<>이 올바른 선택입니다.

6

성능이 중요한 문제 일 경우 프로필을 작성하고 어떤 것이 더 나은지 확인하는 것이 좋습니다. 그렇지 않으면 가장 논리적으로 설명하려는 것을 선택하십시오. [다른 곳에서 주문해야하는 경우 및 map이 아직 만족할만한 성능을 보일 수 있다고 생각하는 항목이 100,000 개뿐입니다]