我需要單個字符串映射到多個字符串,要做到這一點我考慮兩種不同的溶液:地圖串矢量或不同的鍵映射到一個值
首先是每個串映射到載體中,從而當我看着鑰匙時,我得到了向量。 std::unordered_map<std::string, std::vector<std::string>>
使用此解決方案意味着我只需要查找一次密鑰,但隨後我必須對數組進行迭代以找到我需要的正確字符串。
我認爲第二個解決方案是使用包含在向量每個字符串(我知道,他們是唯一的)爲重點,並將它們映射到什麼會一直在溶液中1 std::unordered_map<std::string, std::string>
關鍵使用該解決方案的手段我需要查找一個關鍵n次(其中n是解決方案1中數組的長度),並且在我的映射中,我對許多關鍵字都有相同的值(我不知道最後的重要性),但是我會直接有我需要的字符串。
例1:
std::unordered_map<std::string, std::vector<std::string>> map;
std::vector<std::string> arr = {"hello", "world"};
map["greetings"] = array;
例2:
對於我的程序的目的並不重要我有什麼字符串中的端部(從溶液數組的值1或來自解決方案2的值),只要我有辦法將它們映射到對方,這樣兩種解決方案都是可行的。 我沒有辦法事先知道解決方案1中陣列的長度。
這兩種解決方案有什麼重大區別嗎?哪一個會更快/在紙上使用更少的內存?
我很困惑你的問題,因爲映射方向相反。你的意見是什麼:「問候」或「你好」和「世界」?或者你需要能夠映射兩種方式? – Angew
'std :: unordered_multimap'呢? – max66
@Angew如果輸入是'''''''''''''''''''''''''''''''''「hello」和「world」'''''''''''''',我只需要讓它們互相「連接」 。對的向量也可以工作,但是然後我需要重複以找到正確的一個,並且我無法承受那個時間 –