Είμαι προσπαθεί να βρει ένα όνομα σε ένα κλειδί. Νομίζω ότι είναι αυτό ανάκτηση πρόστιμο. Ωστόσο, του έρχονται ως δεν βρέθηκε. ίσως κωδικός μου είναι λάθος κάπου;
if (database.retrieve(name, aData)) // both contain the match
σε main()
static void retrieveItem(char *name, data& aData)
{
cout << >>> retrieve << name << endl << endl;
if (database.retrieve(name, aData)) // name and aData both contain the match
cout << aData << endl;
else
cout << not found\n;
cout << endl;
}
static void removeItem(char *name)
{
cout << >>> remove << name << endl << endl;
if (database.remove(name))
cout << name << removed\n;
else
cout << name << not found\n;
cout << endl;
}
int main()
{
#ifdef _WIN32
// request memory leak report in Output Window after main returns
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
#endif
data aData;
<< Database Of Great Computer Scientists\n\n;
database.insert(data(Ralston, Anthony));
database.insert(data(Liang, Li));
database.insert(data(Jones, Doug));
database.insert(data(Goble, Colin));
database.insert(data(Knuth, Donald));
database.insert(data(Kay, Alan));
database.insert(data(Von Neumann, John));
database.insert(data(Trigoboff, Michael));
database.insert(data(Turing, Alan));
displayDatabase(true);
retrieveItem(Trigoboff, Michael, aData);
retrieveItem(Kaye, Danny, aData);
removeItem(Ralston, Anthony);
displayDatabase(true);
ανακτήσετε τη λειτουργία ...
bool BST::retrieve(const char *key, data &aData, int parent) const
{
for(int index=0; index < maxsize+1; index++)
{
if (!items[index].empty)
{
if ( items[index].instanceData == key )
{
aData.setName(key);
return true; // doesn't return right away
}
}
}
}
και ορίζεται στο data.cpp
bool operator== (const data& d1, const data& d2)
{
return strcmp(d1.getName(), d2.getName()) == 0;
}
έτσι ώστε αυτό το κομμάτι του κώδικα μέσα στο main () είναι που δεν λέει βρεθεί πότε εγώ πιστεύω ότι πρέπει να λειτουργούν σωστά. τόσο το όνομα και ADATA περιέχει το σωστό όνομα που βρέθηκε ..
static void retrieveItem(char *name, data& aData)
{
cout << >>> retrieve << name << endl << endl;
if (database.retrieve(name, aData)) // name and aData both contain the match
cout << aData << endl;
else
cout << not found\n;
cout << endl;
}













