Passer un tableau dynamique d'objets à la fonction
Je suis dans le processus de l'apprentissage du c++. Donc, je connais une méthode par laquelle vous envoyer quelque chose à la fonction, puis de travailler comme si c'était l'appel par valeur, mais en fait c'est de les appeler par référence. Par exemple
void myFUNC(string& x)
Maintenant, j'ai créé dynamiquement tableau d'objets. Je veux passer le tableau de fonctionner comme une méthode ci-dessus. Voici les extraits de code
City *p = new City[number]; //pointer to dynamic array of class objects
//function prototype
void list_cities(int number, City p[]){
for(int i=0; i<number; i++){
cout<<p[i].get_name()<<endl;
}
}
Comment passer au tableau dynamique à la fonction comme la méthode ci-dessus
BTW, préférez
quelque chose de plus facile? juste m'aider dans l'envoi de la dynamique de matrice de la fonction
Que voulez-vous dire? Il n'y a rien de plus facile que de
list_cities(number, p);
BTW, préférez
std::vector
.quelque chose de plus facile? juste m'aider dans l'envoi de la dynamique de matrice de la fonction
Que voulez-vous dire? Il n'y a rien de plus facile que de
list_cities(number, p)
OriginalL'auteur Fahad Rana | 2015-03-04
Vous devez vous connecter pour publier un commentaire.
Les tableaux sont par défaut convertis à des pointeurs, qui sont ensuite transmis comme référence. Donc, il n'y a aucune disposition pour explicitement les baies de passage par référence. C'est,
n'est pas
p[]
être adopté comme référence, mais rendp[]
un tableau de références.Code:
Suivi d'un lien ici, les tableaux sont pas passé par référence, tableau de pointeur de la conversion est effectuée. Dans ce cas, aucun tableau n'existe même, il n'est qu'un pointeur.
OriginalL'auteur shauryachats
Point de prêter à confusion, un paramètre de fonction qui ressemble à un tableau
City p[]
est en fait un pointeur, l'équivalent deCity * p
. Ainsi, vous pouvez simplement passer un pointeur de votre tableau dynamique:Cela dit, préfèrent amicale des types comme
std::vector<City>
de sorte que vous n'avez pas à jongler avec les pointeurs et soigneusement éviter les fuites de mémoire et pour le pire.OriginalL'auteur Mike Seymour
À l'aide de
std::vector
vous pouvez également effectuer les opérations suivantes:Vous devriez certainement lire à ce sujet. C'est un conteneur du c++ Standard Template Library), qui est en fait une très mince wrapper autour de la gamme dynamique. Mais à la différence des tableaux dynamiques il offre des fonctions de base par exemple pour l'insertion ou le retrait d'éléments et peut gérer la taille du tableau pour vous.
OriginalL'auteur Satara