簡體   English   中英

替代搜索功能和哈希向量 <struct> C ++

[英]alternative search function and hash vector<struct> C++

編寫程序以搜索通訊錄。 快速搜索時間是重中之重。 教授希望匹配函數看起來像

Container<const Person*> matches( std::string prefix ) const;

我在定義這種功能時遇到了麻煩。 另外,稍后又添加了第二部分,以向程序添加哈希函數。 我將如何為字符串結構編寫哈希函數。 我已經附上了代碼的重要部分。

`struct Person 
`{
std::string firstName;
std::string lastName;
std::string email;
`};

`class AddressBook
`{
`public:

AddressBook();
void add(Person person);
void match(std::string namesearch);
std::vector<Person> perV;

`};

void AddressBook::match(std::string namesearch)
`{
for (std::vector<Person>::const_iterator itr = perV.begin(); itr <     `    `   perV.end(); ++itr)
{
    if (strstr(itr->firstName.c_str(), namesearch.c_str()) || 
        strstr(itr->lastName.c_str(), namesearch.c_str()))
    {
        std::cout << itr->firstName << ' ' << itr->lastName
            << std::endl << "Email: " << itr->email << std::endl;
    }

  }

`}

對我來說,為字符串的結構編寫哈希函數聽起來不是一個好計划。 但是您可以根據鏈接中具有的每個字符串屬性形成一棵樹。

我認為提高搜索時間效率的另一種好方法是使用trie結構。 您可以為所有擁有的字符串屬性實現它,並且效果很好。 時間復雜度為O(W * L),其中W是唯一單詞的數量,L是單詞的平均長度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM