Avant de commencer à écrire le code de mon projet, j'ai besoin de conseils. Il s'agit de trouver fréquemment l'occurrence d'éléments (mode). Les éléments peuvent être dans le tableau int
, char
, any object of class/struct
. Donc, je dois utiliser void*
. J'ai une fonction qui retourne la première occurrence de l'élément mode. est-ce quepointeur vide constatant fréquemment l'occurrence d'éléments
int arr[] = { 1, 7, 2, 4, 4, 8, 4 }
mode is 4
> return value 3
char arr[] = { 'q', 'w', 'w', 'u', 'u', 'w', 'o' }
mode is w
> return value 1
myClassObj[4];
myClassObj[0].mySetter(0,4);
myClassObj[1].mySetter(1,1);
myClassObj[2].mySetter(1,1);
myClassObj[3].mySetter(7,9);
> return value 1
Dois-je trier tout type de tableau pour trouver le mode? Devrais-je utiliser la bibliothèque de cartes? Que dois-je faire, comment puis-je commencer?
int indexOfFirstMode (const void * base, int num_of_elements, int size_of_arr,
bool (*checker) (const void *, const void *));
Edit:
Je ne devrais pas utiliser template
pour l'instant
Il semble que vous n'ayez qu'une fonction pour comparer deux éléments d'égalité, donc je ne pense pas que le tri ou l'utilisation de cartes sera toujours possible. – grc
Est-ce à propos de C ou C++? – edmz
_ "Donc, je dois utiliser void *" _ Vous vous trompez. Vous devriez utiliser 'boost :: variant'. Autrement dit, en supposant que votre code est _actually_ C++. Pourquoi l'avez-vous tagué C? –