Comment créer une table de recherche
Fondamentalement, je n'ai réalisé que la façon dont j'ai codé mon projet j'ai besoin de mettre en œuvre une certaine forme de table de recherche, maintenant, je n'ai jamais fait cela avant et donc ne sais pas comment le faire, et une recherche sur google ne donne pas vraiment un ensemble clair d'instructions
J'ai besoin de la table de recherche de sorte qu'un utilisateur peut saisir une fonction dans la ligne de commande, puis passer dans les paramètres de la fonction, mais aucune idée de par où commencer
- Puisque vous êtes à l'aide de c++, je m'attends il y a certains type de conteneur que vous pouvez utiliser directement. cplusplus.com/reference/map/map probablement. Bref, vous pouvez définir votre propre structure contenant un espace pour la recherche de la clé, et pour tout ce qui touche est censé représenter; créer un tableau de ce type de structure, et de remplir le tableau avec sa clé/valeur des mappages. Puis, quand vous lisez dans votre entrée, vous scannez le tableau à la recherche de cette entrée comme une clé.
- Veuillez préciser ce que vous entendez par "l'entrée d'une fonction dans la ligne de commande". Est-il le nom d'une fonction ou d'une définition de fonction?
Vous devez vous connecter pour publier un commentaire.
Vous pourriez faire quelque chose comme cela dans le but de créer une liste de choix (expédition) tableau:
(Avis: C'est une façon de mettre en œuvre une expédition table et c'est à la fois le C et le C++ équivalente. Il y a d'autres-et peut-être des façons plus faciles de le faire en C++, sans réinventer la roue, comme l'utilisation de certains conteneurs, etc).
(Basé sur: Ajout: multijoueur en écran partagé pour c++ jeu)
Maintenant sur le programme d'entrée, vous pouvez mapper le nom de votre fonction pour obtenir l'index, par exemple, et vous pouvez appliquer l'exemple ci-dessus de fonctions paramétrables et vous pouvez aussi l'utiliser dans des situations que les fonctions sont paramétrées.
Dans ce cas,veuillez prendre en considération que toutes les fonctions doivent obéir à la fonction pointeur de la signature afin de l'utiliser dans cet exemple. Sinon, vous avez à faire plus compliqué les choses (comme l'utilisation d'un
void
* argument et en passant un des argumentsstruct
"instance" pointeur de fonction).typedef
pour déclarer des types de fonction. Cela évite le mal #définir des macros.Je ne sais pas exactement à vos exigences, mais je ne pouvais imaginer qqch comme ceci:
Vous pourriez vouloir regarder dans Fonction C++ les pointeurs. Vous pourriez faire une propre structure qui contient:
Créer pour chaque fonction que l'utilisateur peut appeler une instance de cette structure. Les afficher à l'utilisateur et lui laisser choisir. Dans la deuxième étape, le laisser entrer les valeurs pour les arguments.
Vous pouvez utiliser
std::map<std::string, functype>
oùfunctype
est untypedef
'd pointeur de fonction, ou même unboost::function<>
type.std::map
est qu'il doit être chargé par le programme au moment de l'exécution. Une table de correspondance peut être constant et de la statique placé dans la mémoire en lecture seule.std::map
avec un initialiseur pourrait êtreconst
etstatic
. Mais peut-être qu'il ne pouvait toujours pas être en lecture seule mémoire.Je vous donne l'exemple et sur Arduino, c'est presque le même code C/C++ analogie
Les tables de recherche le plus puissant des trucs dans la programmation de l'univers.
Ils sont des tableaux contenant des valeurs précalculées et donc remplacer lourd d'exécution
les calculs par un simple tableau d'index. Par exemple, imaginez que vous voulez
suivre les positions de quelque chose en lisant les distances à venir à partir d'un tas de distance
les capteurs. Vous aurez trigonométriques et probablement de la puissance des calculs à effectuer.
Parce qu'ils peuvent être beaucoup de temps pour votre processeur, il serait plus intelligent et
moins cher à l'utilisation de la matrice de contenu de lire au lieu de ces calculs. C'est l'habitude
illustration de l'utilisation de tables de recherche.