gpt4 book ai didi

c++ - 二进制搜索和按字母顺序排列数组 C++

转载 作者:行者123 更新时间:2023-11-28 07:03:58 24 4
gpt4 key购买 nike

我有一个包含联系人号码和姓名的动态数组。我想知道如何对名称进行二进制搜索。假设我有 20 个联系人,我想查找姓名为 “John” 的联系人的号码。

数据结构如下:

struct Contact
{
int ContactNumber,Fax;
string Name, Email;
PhoneNumber Phone;
Address anAddress;
};

我有:

Contact * ptrFirst = & arrofCont[0];
Contact * ptrLast = & arrofCont[MAX - 1];

包含联系人姓名、电话号码和地址等。我想这些可以用作第一个和最后一个,但不知道从那里去哪里。

最佳答案

您不需要对数组进行排序或二进制搜索来执行您想要的操作。
只需使用 std::find_if .

#include <algorithm>
#include <iostream>
#include <string>
#include <vector>

struct Company
{
std::string name ;
std::string number ;
};

struct HasName
{
HasName (const std::string &name) : name (name) {}
bool operator () (const Company &company) {
return company.name == name ;
}

std::string name ;
};

int main (void)
{
std::vector <Company> companies ;
// Fill up the vector...

std::vector <Company>::const_iterator citer ;
citer = std::find_if (companies.cbegin (), companies.cend (), HasName ("John")) ;

if (citer != companies.cend ()) {
std::cout << citer->number << "\n" ;
}

return 0 ;
}

关于c++ - 二进制搜索和按字母顺序排列数组 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22044288/

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