繁体   English   中英

使用矢量 C++ 进行二分搜索

[英]Binary search with vector c++

我有一个结构,其中数据定义为:

typedef struct contacts 
{
    string name;   //{jhonathan , anderson , felicia}
    string nickName; //{jhonny  , andy , felic}
    string phoneNumber; // {13453514 ,148039 , 328490}
    string carrier;  // {atandt , coolmobiles , atandt }
    string address; // {1bcd , gfhs ,jhtd }

} contactDetails;

vector <contactDetails> proContactFile;

在这里,我想对name进行二分搜索。如果搜索到的名称可用,那么我想显示该名称的相关联系方式( nickname,phone number ,carrier ,address )。我该怎么做?

auto cmpFn = [](const contacts &c1, const contacts &c2) {return c1.name < c2.name;};

// 1. vector must be sorted
std::sort(proContactFile.begin(), proContactFile.end(), cmpFn);

// 2. what to find
contacts findme; findme.name = "cat";

// 3. find
auto it = std::lower_bound(proContactFile.begin(), proContactFile.end(), findme, cmpFn);
bool found = it != proContactFile.end() && it->name == findme.name;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM