[英]How to quickly search a large vector many times?
我有一個包含 43,000 個字典單詞的std::vector<std::string>
。 我有大約 315,000 個可能的單詞,對於每個單詞,我都需要確定它是否是一個有效的單詞。 這需要幾秒鍾,我需要盡快完成任務。
關於完成此任務的最佳方法的任何想法? 目前我在每次嘗試中迭代:
for (std::string word : words) {
if (!(std::find(dictionary.begin(), dictionary.end(), word) != dictionary.end())) {
// The word is not the dictionary
return false;
}
}
return true;
有沒有更好的方法來迭代多次? 我有一些假設,例如
有一個更好的方法嗎? 我對算法或想法感興趣。
有沒有更好的方法來迭代多次?
是的。 將向量轉換為另一個支持更快查找的數據結構。 標准庫帶有std::set
和std::unordered_set
,它們都可能比重復線性搜索更快。 其他數據結構可能更有效。
如果您的目標是在可能的集合中創建一系列單詞或非單詞,那么另一種有效的方法是對兩個向量進行排序,並使用std::(ranges::)set_intersection
或std::(ranges::)set_difference
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.