Oui. Au lieu de tableau, utilisez une carte. Il remplir être plus efficace en termes d'espace, et presque aussi vite.
Vous pouvez utiliser STL et de garder vos comptes dans un std :: carte, une de ces variantes:
map<int, Account> or
map<int, Account*>
Dans le premier cas, vous gardez les comptes sur la carte, dans le second vous gardez la pointeurs sur les comptes, et sont responsables de la création/suppression. Quelle variante est plus appropriée? Cela dépend de la façon dont vous créez/initialisez le compte.
tutoriel sur l'utilisation de la carte STL
J'exlain le cas quand vous gardez les pointeurs sur la carte.
Voici comment vous déclarer la carte:
map<int, Account*> accounts;
Voici comment vous pouvez ajouter un nouveau compte à la carte:
int account_id = 123; // or anything else
Account* account = new Account(...paramters for the constructor...)
// any additional code to initialize the account goes here
accounts[account_id] = account; // this adds account to the map
Voici comment vérifier si le compte avec account_id est sur la carte:
if (accounts.find(account_id) != accounts.end()) {
// It is in the map
} else {
// it is not in the map
}
Voici comment vous obtenez le pointeur sur un compte de la carte:Enfin, quelque part à la fin de votre programme, vous devez nettoyer la carte et supprimer tous les objets du compte. Le programme fonctionnera bien même sans le nettoyage, mais il est important de nettoyer après vous. Je laisse ceci comme un exercice pour vous :) Trouvez comment parcourir tous les éléments de la carte, et appliquez la suppression appropriée.
Oui. La façon la plus efficace de vérifier cela est le tableau, mais puisque vous voulez retourner l'instance, vous avez besoin d'un espace de pointeur. Supposons que vous prévoyez 500 comptes, soit 500x4 octets = 2000 octets ou 1.95 ko. Avec des pointeurs de 32 bits bien sûr. Une recherche typique serait comme ceci Compte * GetAccount (int an) { return accountsArray [an]; } AccountsArray peut être un tableau statique créé au moment de la compilation ou de la mémoire dynamique, vous choisissez. Bien sûr, les autres solutions sont également très bonnes. En utilisant la carte ou le vecteur est bien. – toto