最快的c ++/stl算法,用于查找成对的字符串

Kar*_*arl 0 c++ algorithm stl c++11

我正在寻找一种非常快速的算法来返回存储在这样的集合中的对的值 set<pair<string,string>>

更具体地说,我查找所有第二个值,其中first-value以字符串开头.

示例:我有一组这些对:

<"asdf","qwer">,
<"asdfghj", "qwertyui">,
<"lkj","mno">
Run Code Online (Sandbox Code Playgroud)

然后我用"asdf"调用我的方法,我想找回这些字符串的集合或向量:

"qwer"
"qwertyui"
Run Code Online (Sandbox Code Playgroud)

谢谢!

Jas*_*n R 8

std::set将对存储在一个中的事实意味着它们将按键排序.您可以使用std::set::lower_bound()查找具有按字典顺序大于或等于搜索键的键的第一个元素,然后迭代直到该条件不再有效.