C++ 最快的c&x2B+;/寻找成对字符串集的stl算法

C++ 最快的c&x2B+;/寻找成对字符串集的stl算法,c++,algorithm,c++11,stl,C++,Algorithm,C++11,Stl,我正在寻找一种非常快速的算法来返回存储在这样一个集合中的成对值set 更具体地说,我查找所有第二个值,其中第一个值以字符串开头 例如: 我有一套这样的鞋: <"asdf","qwer">, <"asdfghj", "qwertyui">, <"lkj","mno"> 谢谢大家! 将对存储在std::set中这一事实意味着它们已经按键排序了。您可以使用std::set::lower_-bound()查找第一个元素,该元素的键在字典上大于或等于您的搜索键,然后迭

我正在寻找一种非常快速的算法来返回存储在这样一个集合中的成对值
set

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

例如: 我有一套这样的鞋:

<"asdf","qwer">,
<"asdfghj", "qwertyui">,
<"lkj","mno">

谢谢大家!

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

您可以更改原始数据结构吗?这不是此任务的最佳选择。将对存储在
std::set
中的事实意味着它们已经按键排序了。您可以使用
std::set::lower_-bound()
查找第一个元素,该元素的键在字典上大于或等于您的搜索键,然后迭代,直到该条件不再有效。更好的问题可能是是否有更好的数据结构可供使用。实际上,数据集有多大?这对解决问题的方式有很大影响。数据结构必须保持这样。这个集合中大约有500.000个元素,通常没有“最快”的算法。对于特定的数据集,可能有最快的算法,或者有具有特定特征的算法。它们的行为取决于数据和您的需求(可用内存等)。谢谢,我会试试这个。但是,如果我的集合包含一对,那么下限是如何工作的呢?@Karl:std::set是使用
操作符排序的
"qwer"
"qwertyui"