2009-03-03 7 views
1

J'utilise la bibliothèque matheval. Ses fonctions prennent des paramètres de style c, par exemple:convertir un vecteur de chaînes/doubles en tableaux

#include<matheval.h> 

    char * evaluator_evaluate(void * evaluator, int count, char **names, double *values); 

Dans mon cas, je veux convertir std :: vecteur de noms et std :: vecteur de valeurs char ** et double *

De plus, chaque nom correspond à une valeur unique, et il pourrait y avoir des répétitions. Quel est le meilleur moyen d'organiser élégamment les noms et les valeurs en termes de structures de données? Pour l'instant, j'utilise des vecteurs, et les deux contiennent des répétitions.

Modifier Veuillez garder à l'esprit que l'ordre des noms et des valeurs est important et doit correspondre.

Merci

+0

Utilisez-vous des vecteurs STL? Essayez-vous de vous débarrasser des doublons? Voulez-vous/devez-vous conserver l'ordre de vos données? – cbrulak

+0

Dans quel format sont stockés vos vecteurs d'entrée? Par exemple. vecteur ? –

+0

oui, l'ordre compte, les vecteurs sont de STL. Ce serait bien de se débarrasser des doublons. Laissez-moi éditer les questions de manière appropriée. Merci pour le commentaire. –

Répondre

1

En interne, la norme exige qu'un vector<> est équivalent à un tableau. Vous pouvez prendre l'adresse vector[0] et le pointeur qui en résulte pointe vers une zone de mémoire contiguë où les données sont stockées, dans le même ordre que le vecteur. Ce pointeur est valide jusqu'à ce que le vector<> soit redimensionné.

Pour std::string valeurs (ou tout autre objet, d'ailleurs), cependant, vous obtiendrez seulement un tableau de string objets.

+0

greyfade, qui résout joliment mon premier problème avec les doubles. Qu'en est-il de la seconde? Aucune suggestion? –

+0

Tout ce que je peux suggérer est d'allouer un tableau char ** et l'initialiser avec les pointeurs string.c_str(). Cela peut causer des problèmes si la fonction C s'attend à pouvoir les changer, cependant. – greyfade

+0

Peut-être, je peux utiliser une autre structure de données. C'est un problème assez commun - je suis sûr qu'il y a une solution :) –

Questions connexes