[英]Check if map in C++ contains all the keys from another map
我計划在C ++中使用兩個映射,類型為: std::map<char, Node>
,其中Node
是一個自定義類。 假設我有兩個地圖,上面類型的m1
和m2
,我想知道m1
是否包含m2
存在的所有鍵。 換句話說,我想驗證該組密鑰的交點m1
和m2
是相同的該組密鑰的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.