簡體   English   中英

C ++:搜索以給定前綴開頭的字符串數組

[英]C++: Searching an array of strings that begin with a given prefix

假設我得到了一個字符串向量vector<string> names = {"ab","abs","act","add"} 我還得到了一個字符串前綴string prefix ("ab") 我的工作是使用以給定前綴開頭的所有名稱填充另一個字符串向量(我們稱其為vector<string> name_list )。 目前,我只是通過使用字符串比較函數來執行此操作,如下所示:

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包含數百萬個字符串時,這是否是最有效的算法? 如果沒有,可以使用什么其他算法?

從由std::set<std::string>::lower_bound(prefix)的迭代器開始,然后線性向前搜索。

std::set<std::string> names {"ab","abs","act","add"};
std::string prefix = "ab";
auto itr = names.lower_bound(prefix);
while (itr != names.end() && !prefix.compare(*itr, 0, prefix.size())) {
     // matching string
     ++itr;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM