C questions?

M

Mimoto

Guest
Bonjour,

J'ai développé une application Visual C 6.0 du programme.Je voudrais vous poser quelques questions.Je suis l'apprentissage de Visual C et je suis assez novice.

Dans mon programme,
j'ai lu les lignes à partir d'un fichier.J'utilise l'allocation de mémoire statique.
Cline est une classe créé par moi.

Cline ArrayData [1000]; / / Ici, 1000 est l'immatriculation des lignes du fichier
/ / Je ne sais pas d'immatriculation, mais la, je
m'attends à être inférieur à 1000.
char Data [1000] [16];
/ / Ici, le 1000 est pour la même raison, mais le 16 est fixéeJe sais que
c'est peut-être pas la solution optimun (je me réserve sans doute plus de mémoire que je utiliser) et il semble plus que le C C .
Je me demandais plutôt dynamique en utilisant la gestion de la mémoire mais je ne sais pas comment le faire.J'ai aussi pensé à utiliser le «vecteur» de classe, mais je crois que pour unidimensionnelle arraysż?.

La question est de żHow vous faire de ces experts?.Il est préférable d'utiliser la mémoire dynamique?.Et est-il possible de déclarer un vecteur de ma classe CLinea ou les types de vecteur ne sont int, etc?.

Merci beaucoup et désolé de vous frapper avec autant de questions,

Cordialement,

Mimoto

 
Salut Mimoto,

Il existe de nombreuses façons de le faire, mais je pense que le mieux est d'utiliser le Standard Library (inclus dans toute distribution de C )

tout d'abord, vous d'inclure la bibliothèque vctor

#
include <vector> / / sans. h

<img src="http://www.edaboard.com/images/smiles/icon_eek.gif" alt="Choqué" border="0" />/ / déclarer vos types
std:: vector <Cline> ArrayData;

d'insérer vos données à la fin de votre utilisation du vecteur push_back fonction, ex.
ArrayData.push_back (...);

pour accéder à vos données, utilisez le [] opérateur, comme le C arrays.

d'utiliser des tableaux multidimension déclarer types.

std:: vector <char> ch_vector;
std:: vector <ch_vector> de données;

si avez des doutes regardez http://www.sgi.com/tech/stl/, ou envoyer moi un message.

cordialement,

mgs_p

 
C
1.Définir un pointeur char * Buffer;
2.Utilisez la fonction malloc pour allouer un mémoire au moment de l'exécution.C
1.définir votre callss
2.Utiliser les nouvelles fonctions pour créer votre classe

consulter ce site, vous trouverez réponse à votre Qestion sur les détails ..
http://www.cplusplus.com/doc/tutorial/tut3-4.html
(Mémoire dynamique)

Tutorial Main Page
http://www.cplusplus.com/doc/tutorial/

 
Salut

Ot je suis expert en C , mais l'allocation de mémoire dynamique est assurée par
les "nouveaux" opérateur
et publié thorugh "supprimer".
sur le côté droit de la nouvelle, il y aura classe.
Du côté des autres, vous pouvez utiliser la bibliothèque STL contenant comme mgs_p a conseillé ou vous pouvez écrire votre propre bibliothèque.Mais ntoe que l'allocation de mémoire dynamique en C
est plus de temps que malloc en C.

 
Bonjour Mimoto,

Vous devriez considérer si vos pensées sont plus sakes de base ou de déterminer de frapper une solution appropriée en termes d'un programme C .

Préférez-vous le dernier de mes conseils pour utiliser Microsoft Foundation Classes fournis également par votre paquet VC et doit être installé sur votre disque dur pour le moment.
Je dois admitt la compréhension ne se fait pas en quelques heures, mais passer un peu de temps pour en apprendre davantage sur le sujet et vous le verrez, votre problème est résolu pour le moment.
Vous
n'avez pas à développer une nouvelle classe de votre propre.
Dans le tout début CArray quelque type que l'intérieur de votre éditeur de terrain ont un clic sur le curseur de sorte
qu'il repose là-bas et puis appuyez sur la touche <F1>.
Le système d'aide sera appelée.
Sélectionnez CArray à l'intérieur de la listfield apparaît et vous verrez un fini classe couvrant tous vos souhaits en termes de gestion de vos données.Utilisez les membres appartiennent à la classe et savoir ce
qu'ils font et qui sont les bons pour votre gestion des données.

bonne chance!

Robby

 
Merci pour les réponses,

Je vais en apprendre plus sur le MFC.Ils semblent ce que je recherche.Et, dernière question.

Si
j'utilise le vecteur contenant au lieu de:
Cline ArrayData [1000]; / / Ici, 1000 est l'immatriculation des lignes du fichier

<Cline> vecteur v (100);

Qu'est-ce-t-il si
j'ai besoin après plus de 100 éléments.devrais-je supprimer le segment de mémoire alloués pour v (100) et d'allouer plus de mémoire de copier le tableau précédent ou de ce
qu'il se fait automatiquement.

Cordialement,

Javi

 
MFC est bonne si vous souhaitez limiter votre connaissance de windows.
Mais attention avec MFC!Ils semblent être faciles à utiliser, mais difficile à maîtriser!

Si vous voulez écrire des programmes plus généraux, vous pouvez utiliser la STL (Standard Template Library), comme mentionné ci-dessus.C'est peut-être un littlebit difficile de commencer avec eux (en particulier l'itérateur part peut-être étrange au début), mais ils sont très puissants, une fois que vous savez comment les utiliser!

Ou si vous voulez vraiment une flexibilité complète, vous pouvez essayer d'écrire votre propre classe de conteneur et de surcharge des opérateurs que vous voulez ([], , =, ==, ...)
(Vous devez lire un bon livre C avant de commencer à le faire

<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Wink" border="0" />

)La suggestion que je donne sur Visual C :
Essayez d'apprentissage C premier!
Visual C est dangereux et allouer des ppl perdre eux-mêmes par écrit
de l'interface graphique et de mettre les algorithmes,
les données, ...dans l'interface
de la (BAD !!!).Ils ne semblent jamais se rendre à la réflexion sur les classes, l'héritage,
la surcharge, ....
Essayez de démarrer avec la fonctionnalité (dans un terminal de l'application, par exemple) et Don't commencer par mettre des boutons de la boîte de dialogue et d'appeler la ClassWizard pour ajouter une méthode à la touche.

Antharax

 
En ce qui concerne votre question:
Vous utilisez la STL et non pas en utilisant les MFC vecteur (ce qui est bon!)
(Il ne semble pas être une classe CVector

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />

)
Et vous
n'avez pas se soucier de la taille!Lorsque vous ajoutez quelque chose pour le vecteur, il augmente automatiquement la taille en cas de besoin.
(vous pouvez l'instancier comme ceci: vecteur <Cline> v)

Il suffit d'ajouter ce que vous voulez, lire, supprimer des éléments, ...

Antharax

 
Javi Salut!

Je pense que vous ne pouvez pas faire cela: vecteur <Cline> v (100);Et vous devez écrire à la place: vecteur <Cline> v;
you can see the maximum possible length of the vector which you can allocate.

si vous appelez le cout <<v.max_size (),
vous pouvez voir le maximum de longueur du vecteur, vous pouvez allouer.or v.insert(clineVar, 3);
indeed the vector class allocates memory for you class so don't worry about it.

et quand vous appelez v.push_back (clineVar),
ou v.insert (clineVar, 3);
en effet le vecteur de classe alloue la mémoire pour la classe, afin que vous ne vous en inquiétez pas.

si vous voulez savoir quel est le nombre d'éléments dans votre utilisation de ce vecteur:
cout <<v.size ();aussi si vous voulez savoir quel est le nombre d'éléments dans la mémoire de votre vecteur: cout <<v.capacity ();

ce nombre réel de retour de la fonction de stockage qui contient la mémoire libre dans votre vecteur bien sûr si vous ajoutez un élément de plus de ce nombre, le vecteur de classe automatiquement allouer plus de mémoire pour votre vecteur.(it's more efficient) if you have enough memory.

mais
c'est mieux si vous utilisez v.resize (100),
(il
est plus efficace) si vous avez suffisamment de mémoire.
Cordialement<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Wink" border="0" />
 
Bonjour Antharax,

Vous avez absolument raison,
la connaissance, le MFC ne se fait pas "par la voie», mais après environ 2 ans, vous obtenez une bonne sensation de ce qui se passe dans ce système sophistiqué.La situation est en cours d'exécution en raison de compliquer le fait de ne pas tous les éléments d'API sont wraped à l'intérieur de la MFC et la connaissance de la victoire complète Application Interface est signé.Pour oublier ce aboutir à un cul-de-sac.
Parfois, des déclarations ont annoncé,
en utilisant les MFC de stand Allone sont plus un sujet à réfléchir à deux fois environ.Au moins, à mon avis.

Qu'est-ce que le MFC ne fait que fournir une skelet avec de tels dispositifs comme Doc / View-Design, un divertion entre les données et les afficher et une nécessité pour la conception des programmes puissants.Pour inventer ce qui vous prend beaucoup de temps pour mieux utiliser les principaux éléments.

salutations

Robby

 

Welcome to EDABoard.com

Sponsor

Back
Top