Algorithm ya Utafutaji Mwema (Dynamic Search) katika C++- Maelezo, Mfano na Msimbo

Kanuni ya utafutaji inayobadilika, pia inajulikana kama algoriti ya "search-as-you-type", kwa kawaida hutumiwa kutekeleza vipengele kama vile kukamilisha kiotomatiki katika baa za utafutaji. Kanuni hii hutoa mapendekezo ya wakati halisi kulingana na ingizo la mtumiaji na data inayopatikana.

Inavyofanya kazi

  1. Anza na mkusanyiko wa data ulio na orodha ya vitu(kwa mfano, maneno, majina au bidhaa).
  2. Mtumiaji anapoandika kila herufi, sasisha hoja ya utafutaji.
  3. Chuja mkusanyiko wa data kulingana na hoja ya sasa ya utafutaji.
  4. Onyesha matokeo yaliyochujwa kwa mtumiaji katika muda halisi.

Mfano

Fikiria seti ya lugha za programu: ["C", "C++", " Java ", " Python ", " JavaScript, ", " Ruby ", " Swift "].

  1. Aina za mtumiaji "C". Matokeo yaliyochujwa: ["C", "C++"].
  2. Aina za mtumiaji "C ++". Matokeo yaliyochujwa: ["C++"].
  3. Aina za watumiaji " Java ". Matokeo yaliyochujwa: [" Java ", " JavaScript "].
  4. Aina za mtumiaji "Py". Matokeo yaliyochujwa: [" Python "].
  5. Aina za mtumiaji "Jav". Matokeo yaliyochujwa: [" Java ", " JavaScript "].

Msimbo wa Mfano katika C++

#include <iostream>  
#include <vector>  
#include <string>  
  
std::vector<std::string> dynamicSearch(const std::vector<std::string>& dataset, const std::string& query) {  
    std::vector<std::string> results;  
  
    for(const std::string& item: dataset) {  
        if(item.find(query) != std::string::npos) {  
            results.push_back(item);  
        }  
    }  
  
    return results;  
}  
  
int main() {  
    std::vector<std::string> programmingLanguages = {"C", "C++", "Java", "Python", "JavaScript", "Ruby", "Swift"};  
    std::string userQuery = "Jav";  
  
    std::vector<std::string> suggestions = dynamicSearch(programmingLanguages, userQuery);  
  
    std::cout << "Suggestions for query '" << userQuery << "': ";  
    for(const std::string& suggestion: suggestions) {  
        std::cout << suggestion << ";  
    }  
    std::cout << std::endl;  
  
    return 0;  
}  

Katika mfano huu, dynamicSearch chaguo za kukokotoa huchukua mkusanyiko wa lugha za programu na swali la mtumiaji kama pembejeo. Hurejesha mapendekezo kulingana na hoja ya sasa. Mtumiaji anavyopanga vibambo, kanuni huchuja mkusanyiko wa data na kuonyesha mapendekezo ya wakati halisi.

Kumbuka: Utekelezaji halisi wa utafutaji unaobadilika unaweza kuwa changamano zaidi, ukihusisha mbinu kama vile miundo ya trie au uwekaji faharasa unaofaa kwa seti kubwa za data.