gpt4 book ai didi

c++ - 在所有节点作为结构 C++ 的排序列表中进行二进制搜索

转载 作者:太空宇宙 更新时间:2023-11-03 10:31:54 24 4
gpt4 key购买 nike

我有一个列表,其中包含所有元素作为表单结构

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_boundstd::upper_bound每个人都会返回一个指向他们找到的项目的迭代器,让您可以访问该对象。

关于c++ - 在所有节点作为结构 C++ 的排序列表中进行二进制搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14320395/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com