J'ai une carte commeComment passer une carte 2D en tant que paramètre à une fonction en C++?
std::map< int, int> random[50];
Comment puis-je passer cette carte en tant que paramètre à une fonction dire Perform()?
Merci d'avance.
J'ai une carte commeComment passer une carte 2D en tant que paramètre à une fonction en C++?
std::map< int, int> random[50];
Comment puis-je passer cette carte en tant que paramètre à une fonction dire Perform()?
Merci d'avance.
void Perform(std::map< int, int > r[], size_t numElements);
ou
void Perform(std::map< int, int >* r, size_t numElements);
Puis, de toute façon, appelez
Perform(random, 50);
Edit: cela peut aussi être appelé comme suit pour toute taille de tableau const.
Perform(random, sizeof(random)/sizeof (random[0]));
Merci! ça a fonctionné parfaitement! – aneesh
En supposant que Perform() a une certaine façon de connaître la taille du hasard, vous pouvez passer un pointeur au hasard ... par exemple:
Perform (& aléatoire);
Alternativement, vous pouvez utiliser un std :: liste des std :: cartes, et passer un pointeur (ou même une copie) de cette liste pour effectuer():
Perform (aléatoire); ou Effectuer (& aléatoire);
en fonction de la façon dont Perform est déclaré, bien sûr.
Vous pouvez également passer une référence à cette liste std :: std :: map. – jgottula
Ah oui, c'est ce que j'allais faire avec le Perform (& random) –
& random est un pointeur, pas de référence. –
Selon que vous pouvez faire Perform
une fonction de modèle ou non, vous pouvez choisir de
void Perform(const std::map<int,int> (& map)[50])
Ceci est un fragment de code les illustrant tous les trois.
#include <map>
// number 50 hard coded: bad practice!
void Perform(const std::map<int,int> (& maps) [50] ) {}
// C-style array passing: pointer and size
void Perform(const std::map<int,int>* p_maps, size_t numberofmaps){}
// 'modern' C++: deduce the map size from the argument.
template<size_t N>
void TPerform(const std::map<int,int> (& maps)[N]) {}
int main() {
std::map<int,int> m [ 50 ];
Perform(m);
Perform(m, 50);
TPerform(m);
}
J'ai omis la version où le tableau est passé par valeur, en supposant que cela coûterait des performances inutiles. – xtofl
On dirait que vous avez inclus cela comme la deuxième option "C-style tableau passant". Je ne sais pas d'une autre façon de réellement le copier en passant. :) –
Je voulais dire passer la valeur réelle, comme 'Perform (map
Est-ce que perform() est une fonction existante ou vous allez en écrire une? – Naveen
Ce n'est pas une carte, c'est un tableau de 50 cartes. Est-ce vraiment ce que vous voulez dire par «carte 2D»? –