我有一个列表,其中包含所有元素作为表单结构
typedef struct person_node{
string name;
string country;
}person;
std::list<person> list;
列表已经按人名排序。
如何使用内置的 binary_search() 函数?
我已经知道如何在只有数字作为数据的列表中使用此 binary_search(),但我想知道如何将它用于这样的列表。
我将这个二进制函数用作:
binary_search (list.begin(), list.end(), value, compare_function);
我唯一不知道的是,“如果我需要在列表中查找特定名称,我应该输入什么来代替值?”
此外,我希望一个迭代器指向该节点(如果找到的话)。
最佳答案
您输入一个 person
包含 name
你想找到。
另请注意 binary_search
很少有用(它只告诉你该项目是否存在,而不是它在集合中的位置。它在 std::list
上是双重无用的,因为它需要随机访问迭代器才能很好地工作(std::list
不提供)。
所以,您可能想要的是 std::vector<person>
或 std::deque<person>
,您可能希望使用 std::lower_bound
进行搜索或 std::upper_bound
. std::lower_bound
和 std::upper_bound
每个人都会返回一个指向他们找到的项目的迭代器,让您可以访问该对象。
关于c++ - 在所有节点作为结构 C++ 的排序列表中进行二进制搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14320395/