0
假設我給出了一個字符串向量vector<string> names = {"ab","abs","act","add"}
。我也給了一個字符串前綴string prefix ("ab")
。我的工作是填充另一個字符串矢量(我們稱之爲vector<string> name_list
),其中包含以給定前綴開頭的所有名稱。目前我正在通過簡單地使用字符串比較功能來做到這一點,如下所示:C++:搜索以給定前綴開頭的字符串數組
for (int i = 0; i < names.size(); ++i)
{
if (names[i].compare(0, prefix.size(), prefix) == 0) // If name begins with prefix
(*name_list).push_back(names[i]);
}
這適用於小向量。在上面的例子中,輸出將是["ab","abs"]
我的問題是如果這是最有效的算法,當names
讓我們說數百萬字符串。如果不是,還可以使用哪些其他算法?
爲了節省一些內存,你可以讀取字符串到一個trie – keyser
我認爲使用後綴數組可以減少比較次數。 – rendon