gpt4 book ai didi

c++ - 结构 vector 的二进制搜索

转载 作者:太空宇宙 更新时间:2023-11-04 15:01:42 25 4
gpt4 key购买 nike

我有一个结构 vector ,其中包含具有这种架构的结构

struct Main{

int mainID;
string mainDIV;
string mainNAME;

}

是否可以在结构上使用二进制搜索?我知道它很容易使用值(value)使用

binary_search( vector.begin() , vector.end() , 5 )

但是有没有办法通过回调或其他东西来实际找到结构的属性?我找不到与此主题相关的任何内容。

最佳答案

是的,这是可能的。 value std::binary_search take 仅在与容器的元素进行比较时才有意义。在简单的情况下(如果 Main 在某处支持 operator<),您将提供类型为 Main 的元素。作为值(value):

// check if this specific Main exists
bool yes = std::binary_search(v.begin(), v.end(), Main{0, "some", "strings"});

// does exactly the same thing as above
bool yes = std::binary_search(v.begin(), v.end(), Main{0, "some", "strings"}
, std::less<Main>{});

如果不支持operator< (或者你的容器是由其他东西订购的,例如 mainID ),那么你必须自己提供一个算法将使用的比较器:

// check if there is a Main with mainID 5
bool yes = std::binary_search(v.begin(), v.end(), 5,
[](const Main& element, const int value) {
return element.mainID < value;
});

关于c++ - 结构 vector 的二进制搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36238996/

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