我有幾個字符串的長度爲2000 - 3000個字符,我想將長度爲X的每個子字符串散列爲一個unordered_multimap。因此,我逐字符遍歷每個字符串以確定每個散列。 substr函數創建一個新的字符串,並且將一個std :: pair插入到multimap中。我想盡可能避免。有沒有辦法解決這個問題?如何在不創建新對象的情況下引用substr?
僞碼示例:
For each String str:
For i to str.length - hashlength
hash = str.substr(i, hashlength) //A
unordered_multimap.insert({{hash, i}}); //B
我寧願有A和B部分使用盡可能少的構造函數調用越好。
啓用C++ 11並將hash聲明爲'string &&' – texasbruce
如果hash是一個'std :: string',您可以在循環中重用,那麼您可以調用use'hash.assign(str.begin()+ i,str .begin()+ i + hashlength)'並且至少保存一個分配。 –
如果你想將它存儲在地圖中,那麼至少需要**一**結構 – Paranaix