Et alors? tab.push_back(valeur) ça ajoutera la valeur au tableau, quelle qu'elle soit.Envoyé par Fred2209
Enfin bon, si tu veux mon avis, n'ecris jamais dans ton code qqch que tu ne comprends pas.
Et alors? tab.push_back(valeur) ça ajoutera la valeur au tableau, quelle qu'elle soit.Envoyé par Fred2209
Enfin bon, si tu veux mon avis, n'ecris jamais dans ton code qqch que tu ne comprends pas.
Venez partager vos expériences au sein d'un projet sur slicesofit, agile & amélioration continue
C'est vrai tu as raison, mais je vais me renseigner là dessus.
" l'imagination est plus importante que le savoir. "
Albert Einstein.
Pourquoi un static_cast ici? Le seul contexte où c'est nécessaire c'est quand les surcharges feraient préférer une autre fonction que celle désirée... et alors je pense a priori que surcharger était une mauvaise idée.Envoyé par Médinoc
Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.
Si tu connais a priori la taille de ton tableau, plutôt que de l'agrandir petit à petit tu peux le définir avec:Envoyé par Fred2209
ou tu peux lui donner une nouvelle taille avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part std::vector<float> tab(10);
Code : Sélectionner tout - Visualiser dans une fenêtre à part tab.resize(10);
Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.
Et justement je ne peux pas connaître la taille de mon tableau à l'avance même jusqu'à la dernière valeur rentrée c'est pour cela que je voudrais l'augmenter au fur et à mesure...
" l'imagination est plus importante que le savoir. "
Albert Einstein.
Mais déjà, il faut savoir ce que tu veux faire!
push_back() ajoute la valeur passée en paramètre au tableau.
Donc:
- Si tu veux ajouter 1.5, tu dois simplement faire tab.push_back(1.5);
- Alors que si tu veux ajouter i (qui est un entier), il te faut tab.push_back(static_cast<float>(i));
(même si en fait, avec les promotions automatiques, le static_cast<> est peut-être inutile. Tu peux toujours tester sans et voir si ça compile toujours...).
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Ce l'est. En fait, dans les cas où c'est nécessaire, j'écrirais d'ailleurs plutôt float(i).Envoyé par Médinoc
Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.
Mais en fait si ce petit exemple marche, pour ce que j'ai à faire c'est ce qui me convient le mieux...
Parce qu'au final bien sur que ce n'est pas des valeurs fixes comme 1.5 que je vais mettre dedans...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 #include<vector> void fct1() { vector<float> tab1; vector<float> tab2; vector<float> tab3; for (int i = 1; i<10; i++) { tab1.push_back(static_cast<float>(i)); tab2.push_back(static_cast<float>(i)); tab3.push_back(static_cast<float>(i)); tab1[i] = 1.5; tab2[i] = 1.5; tab3[i] = 1.5; } }
" l'imagination est plus importante que le savoir. "
Albert Einstein.
Mais j'ai testé le function-style cast, c'est aussi brutal que le C-Style cast, donc à bannir aussi.Envoyé par Jean-Marc.Bourguet
Fred2209 : Ben non ce n'est pas ce qui convient le mieux, tu fais deux opérations là où une seule suffit...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Tu veux dire parce que d'abord j'augmente la taille du tableau et apres je la remplie au lieu de l'agrandir et de la remplir en même temps..
mais est ce que l'indice du tableau (ici c'est "i") va s'incrémenter de un en un si je fais directement un push.back ?
" l'imagination est plus importante que le savoir. "
Albert Einstein.
J'aime pas mettre une syntaxe lourde pour quelque chose d'innocent.Envoyé par Médinoc
Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.
1- ouiEnvoyé par Fred2209
2- littéralement push_back, c'est empiler_à-la-fin. Tu n'as même plus besoin d'un indice. Le dernier élement, ben ... c'est le dernier. Autantempiler directement l'élément final plutôt que d'empiler une valeur bateau que tu va remplacer aussitôt.
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
ok j'ai compris mais alors que fait l'instruction "static_cast" ?
" l'imagination est plus importante que le savoir. "
Albert Einstein.
Quiquonque fait du C++ devrait le savoir: Ici, ça convertit un int en float.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Convertion explicite.
Sans le moindre intérêt pour passer de int à float -- le contraire n'est pas vrai.
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
Je vois deux cas où il y a un intérêt:Envoyé par Luc Hermitte
- pour choisir la bonne surcharge (et sauf si c'est pour éviter une instantiation de template, je m'interrogerais sur la présence de surcharge)
- pour passer l'argument correct à une fonction variadique.
Aucun des deux cas ne doit être très courant.
Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.
Dans ce cas-là un implicit_cast est peut-être plus approprié.
Boost ftw
Et si je le redimensionne au fur et à mesure avec le fonction "tab.resize(x)" comme ceci est-ce que je garde toutes les valeurs précedemment rentrées ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #include <vector> void main() { std::vector<float> tab; for (int i=1;i<10,i++) { tab.resize(i); tab[i] = 1.5; } }
" l'imagination est plus importante que le savoir. "
Albert Einstein.
Oui. Mais je n'ai toujours pas compris pourquoiEnvoyé par Fred2209
ne convient pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 for (int i=1;i<10,i++) { tab.push_back(1.5); }
Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.
Fais plutôt le resize une fois pour toutes, ou utilise le constructeur de vectorEt si je le redimensionne au fur et à mesure avec le fonction "tab.resize(x)" comme ceci est-ce que je garde toutes les valeurs précedemment rentrées ?
Boost ftw
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager