簡體   English   中英

將元素存儲在unordered_set中,並將它們存儲在unordered_map中

[英]Storing elements in an unordered_set vs storing them in an unordered_map

假設我有以下User結構:

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

};

我需要存儲一組用戶記錄(大約10 ^ 5個用戶,也可以擴展得更高)。 如果我將它存儲為unordered_set或unordered_map,它的性能會更好嗎? Unordered_set在技術上與HashSet相同,unordered_map與HashMap相同,對吧? 使用常規集(有序)不是一個選項,因為當元素數量增加時插入和刪除將變得非常慢。

unordered_set <User> userRecords;

要么

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

我需要它在插入,刪除和通過其userId訪問特定用戶對象方面非常快。

我會選擇unordered_map ,因為我可以隨時獲得一個用戶,沒有任何額外的工作,而使用unordered_set我沒有這個功能。

至於上述操作,速度幾乎相同。

由於unordered_set<>不能讓您通過userId輕松訪問用戶,因此unordered_map<>似乎是正確的選擇。

如果性能是一個重要的問題,那么您可能想要分析並查看哪個性能更好。 否則,請選擇最符合邏輯描述您要執行的操作的那個。 [由於只有100K的項目,我認為setmap還可能會有可接受的性能,如果您需要訂購其他地方]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM