簡體   English   中英

檢查C ++中的map是否包含來自另一個映射的所有鍵

[英]Check if map in C++ contains all the keys from another map

我計划在C ++中使用兩個映射,類型為: std::map<char, Node> ,其中Node是一個自定義類。 假設我有兩個地圖,上面類型的m1m2 ,我想知道m1是否包含m2存在的所有鍵。 換句話說,我想驗證該組密鑰的交點m1m2是相同的該組密鑰的m2

我可以遍歷所有的鍵m2和做一個find()count()m1 ,但這似乎是一個浪費,很可能是緩慢的。 我這樣說是因為密鑰在std::map中按排序順序存儲為二叉搜索樹,因此每個查找/計數將采用O(logn),而對於m2的下一個密鑰,則相同的路徑必須從頭開始遍歷m1鍵。

我是STL的新手,所以請原諒我對一些應該很容易實現的東西的無知。 此外,一些簡單的示例代碼片段或代碼片段鏈接將非常有助於更好地理解。 我不能使用非標准庫,包括boost。

提前致謝!

由於map的鍵被排序,您可以同時迭代它們並將鍵相互比較。 如果key(m1) < key(m2) ,則遞增m1的迭代器; 如果key(m2) < key(m1)則m2包含不在m1中的鍵。

這是O(n)。

暫無
暫無

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

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