dans l'article 43550bf3$0$657$, slowlearner à a écrit le 18/10/05 16:51 :
Bonjour, je débute en C++ et apprécierait si qqn pouvait m'expliquer pourquoi le bout de code suivant ne marche pas :
#include <iostream> #include <vector> using namespace std;
int main() { vector<int> a[10], b[10], c[10];
Des parentheses plutot que des crochets
vector<int> a(10), b(10), c(10);
for (int i = 0; i < 10; i++) a[i] = i; for (int i = 0; i < a.size(); i++) b[i] = a[i] * 10; for (int i = 0; i < b.size(); i++) c[i] = a[i] + b[i];
for (int i = 0; i < c.size(); i++) cout << a[i] << "t" << b[i] << "t" << c[i] << endl;
system("PAUSE"); return 0; }
le compilateur s'arrête dès la première boucle ...
Jean-Marc Bourguet
slowlearner writes:
vector<int> a[10], b[10], c[10];
Cette ligne ne fait vraissemblablement pas ce que tu veux. Elle declare des tableaux de 10 vector<int> appelees a b et c. Tu veux vraissemblablement initialiser 3 vector<int> a une taille de 10. C'est vector<int> a(10), b(10), c(10); qu'il faut faire.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
slowlearner <slowlearner@noreply.org> writes:
vector<int> a[10], b[10], c[10];
Cette ligne ne fait vraissemblablement pas ce que tu veux. Elle
declare des tableaux de 10 vector<int> appelees a b et c. Tu veux
vraissemblablement initialiser 3 vector<int> a une taille de 10.
C'est
vector<int> a(10), b(10), c(10);
qu'il faut faire.
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Cette ligne ne fait vraissemblablement pas ce que tu veux. Elle declare des tableaux de 10 vector<int> appelees a b et c. Tu veux vraissemblablement initialiser 3 vector<int> a une taille de 10. C'est vector<int> a(10), b(10), c(10); qu'il faut faire.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
slowlearner
Jean-Marc Bourguet wrote:
slowlearner writes:
vector<int> a[10], b[10], c[10];
Cette ligne ne fait vraissemblablement pas ce que tu veux. Elle declare des tableaux de 10 vector<int> appelees a b et c. Tu veux vraissemblablement initialiser 3 vector<int> a une taille de 10. C'est vector<int> a(10), b(10), c(10); qu'il faut faire.
A+
Merci pour la réponse !
Jean-Marc Bourguet wrote:
slowlearner <slowlearner@noreply.org> writes:
vector<int> a[10], b[10], c[10];
Cette ligne ne fait vraissemblablement pas ce que tu veux. Elle
declare des tableaux de 10 vector<int> appelees a b et c. Tu veux
vraissemblablement initialiser 3 vector<int> a une taille de 10.
C'est
vector<int> a(10), b(10), c(10);
qu'il faut faire.
Cette ligne ne fait vraissemblablement pas ce que tu veux. Elle declare des tableaux de 10 vector<int> appelees a b et c. Tu veux vraissemblablement initialiser 3 vector<int> a une taille de 10. C'est vector<int> a(10), b(10), c(10); qu'il faut faire.
A+
Merci pour la réponse !
slowlearner
Bruno CAUSSE wrote:
dans l'article 43550bf3$0$657$, slowlearner à a écrit le 18/10/05 16:51 :
Bonjour, je débute en C++ et apprécierait si qqn pouvait m'expliquer pourquoi le bout de code suivant ne marche pas :
#include <iostream> #include <vector> using namespace std;
int main() { vector<int> a[10], b[10], c[10];
Des parentheses plutot que des crochets
vector<int> a(10), b(10), c(10);
for (int i = 0; i < 10; i++) a[i] = i; for (int i = 0; i < a.size(); i++) b[i] = a[i] * 10; for (int i = 0; i < b.size(); i++) c[i] = a[i] + b[i];
for (int i = 0; i < c.size(); i++) cout << a[i] << "t" << b[i] << "t" << c[i] << endl;
system("PAUSE"); return 0; }
le compilateur s'arrête dès la première boucle ...
Merci pour la réponse !
Bruno CAUSSE wrote:
dans l'article 43550bf3$0$657$626a14ce@news.free.fr, slowlearner à
slowlearner@noreply.org a écrit le 18/10/05 16:51 :
Bonjour, je débute en C++ et apprécierait si qqn pouvait m'expliquer
pourquoi le bout de code suivant ne marche pas :
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> a[10], b[10], c[10];
Des parentheses plutot que des crochets
vector<int> a(10), b(10), c(10);
for (int i = 0; i < 10; i++) a[i] = i;
for (int i = 0; i < a.size(); i++) b[i] = a[i] * 10;
for (int i = 0; i < b.size(); i++) c[i] = a[i] + b[i];
for (int i = 0; i < c.size(); i++)
cout << a[i] << "t" << b[i] << "t" << c[i] << endl;
system("PAUSE");
return 0;
}
le compilateur s'arrête dès la première boucle ...
dans l'article 43550bf3$0$657$, slowlearner à a écrit le 18/10/05 16:51 :
Bonjour, je débute en C++ et apprécierait si qqn pouvait m'expliquer pourquoi le bout de code suivant ne marche pas :
#include <iostream> #include <vector> using namespace std;
int main() { vector<int> a[10], b[10], c[10];
Des parentheses plutot que des crochets
vector<int> a(10), b(10), c(10);
for (int i = 0; i < 10; i++) a[i] = i; for (int i = 0; i < a.size(); i++) b[i] = a[i] * 10; for (int i = 0; i < b.size(); i++) c[i] = a[i] + b[i];
for (int i = 0; i < c.size(); i++) cout << a[i] << "t" << b[i] << "t" << c[i] << endl;
system("PAUSE"); return 0; }
le compilateur s'arrête dès la première boucle ...
Merci pour la réponse !
slowlearner
slowlearner wrote:
Bonjour, je débute en C++ et apprécierait si qqn pouvait m'expliquer pourquoi le bout de code suivant ne marche pas :
#include <iostream> #include <vector> using namespace std;
int main() { vector<int> a[10], b[10], c[10];
for (int i = 0; i < 10; i++) a[i] = i; for (int i = 0; i < a.size(); i++) b[i] = a[i] * 10; for (int i = 0; i < b.size(); i++) c[i] = a[i] + b[i];
for (int i = 0; i < c.size(); i++) cout << a[i] << "t" << b[i] << "t" << c[i] << endl;
system("PAUSE"); return 0; }
le compilateur s'arrête dès la première boucle ...
Bon, maintenant que l'histoire des parenthèses/crochets est réglée, je remarque également que si je ne déclare pas les tailles des vecteurs, c'est à dire si j'ai : vector<int> a, b, c, j'ai un magnifique plantage du programme (carrément le message d'erreur de windows ! vraiment la classe ;-)) et pour le faire fonctionner, il faut que je passe par la fonction push_back().
Pourquoi ?!?
slowlearner wrote:
Bonjour, je débute en C++ et apprécierait si qqn pouvait m'expliquer
pourquoi le bout de code suivant ne marche pas :
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> a[10], b[10], c[10];
for (int i = 0; i < 10; i++) a[i] = i;
for (int i = 0; i < a.size(); i++) b[i] = a[i] * 10;
for (int i = 0; i < b.size(); i++) c[i] = a[i] + b[i];
for (int i = 0; i < c.size(); i++)
cout << a[i] << "t" << b[i] << "t" << c[i] << endl;
system("PAUSE");
return 0;
}
le compilateur s'arrête dès la première boucle ...
Bon, maintenant que l'histoire des parenthèses/crochets est réglée, je
remarque également que si je ne déclare pas les tailles des vecteurs,
c'est à dire si j'ai : vector<int> a, b, c, j'ai un magnifique plantage
du programme (carrément le message d'erreur de windows ! vraiment la
classe ;-)) et pour le faire fonctionner, il faut que je passe par la
fonction push_back().
Bonjour, je débute en C++ et apprécierait si qqn pouvait m'expliquer pourquoi le bout de code suivant ne marche pas :
#include <iostream> #include <vector> using namespace std;
int main() { vector<int> a[10], b[10], c[10];
for (int i = 0; i < 10; i++) a[i] = i; for (int i = 0; i < a.size(); i++) b[i] = a[i] * 10; for (int i = 0; i < b.size(); i++) c[i] = a[i] + b[i];
for (int i = 0; i < c.size(); i++) cout << a[i] << "t" << b[i] << "t" << c[i] << endl;
system("PAUSE"); return 0; }
le compilateur s'arrête dès la première boucle ...
Bon, maintenant que l'histoire des parenthèses/crochets est réglée, je remarque également que si je ne déclare pas les tailles des vecteurs, c'est à dire si j'ai : vector<int> a, b, c, j'ai un magnifique plantage du programme (carrément le message d'erreur de windows ! vraiment la classe ;-)) et pour le faire fonctionner, il faut que je passe par la fonction push_back().
Pourquoi ?!?
Bruno CAUSSE
dans l'article 43551519$0$28143$, slowlearner à a écrit le 18/10/05 17:30 :
Bon, maintenant que l'histoire des parenthèses/crochets est réglée, je remarque également que si je ne déclare pas les tailles des vecteurs, c'est à dire si j'ai : vector<int> a, b, c, j'ai un magnifique plantage du programme (carrément le message d'erreur de windows ! vraiment la classe ;-)) et pour le faire fonctionner, il faut que je passe par la fonction push_back().
Pourquoi ?!?
La taille size n'etant pas definie a la creation, (size 0 par defaut?), l'operateur [] ne fonctionne pas pour l'ajout d'element, contrairement a push_back() qui est fait pour.
dans l'article 43551519$0$28143$626a14ce@news.free.fr, slowlearner à
slowlearner@noreply.org a écrit le 18/10/05 17:30 :
Bon, maintenant que l'histoire des parenthèses/crochets est réglée, je
remarque également que si je ne déclare pas les tailles des vecteurs,
c'est à dire si j'ai : vector<int> a, b, c, j'ai un magnifique plantage
du programme (carrément le message d'erreur de windows ! vraiment la
classe ;-)) et pour le faire fonctionner, il faut que je passe par la
fonction push_back().
Pourquoi ?!?
La taille size n'etant pas definie a la creation, (size 0 par defaut?),
l'operateur [] ne fonctionne pas pour l'ajout d'element, contrairement a
push_back() qui est fait pour.
dans l'article 43551519$0$28143$, slowlearner à a écrit le 18/10/05 17:30 :
Bon, maintenant que l'histoire des parenthèses/crochets est réglée, je remarque également que si je ne déclare pas les tailles des vecteurs, c'est à dire si j'ai : vector<int> a, b, c, j'ai un magnifique plantage du programme (carrément le message d'erreur de windows ! vraiment la classe ;-)) et pour le faire fonctionner, il faut que je passe par la fonction push_back().
Pourquoi ?!?
La taille size n'etant pas definie a la creation, (size 0 par defaut?), l'operateur [] ne fonctionne pas pour l'ajout d'element, contrairement a push_back() qui est fait pour.
kanze
Bruno CAUSSE wrote:
dans l'article 43551519$0$28143$, slowlearner à a écrit le 18/10/05 17:30 :
Bon, maintenant que l'histoire des parenthèses/crochets est réglée, je remarque également que si je ne déclare pas les tailles des vecteurs, c'est à dire si j'ai : vector<int> a, b, c, j'ai un magnifique plantage du programme (carrément le message d'erreur de windows ! vraiment la classe ;-)) et pour le faire fonctionner, il faut que je passe par la fonction push_back().
Pourquoi ?!?
La taille size n'etant pas definie a la creation, (size 0 par defaut?), l'operateur [] ne fonctionne pas pour l'ajout d'element, contrairement a push_back() qui est fait pour.
La taille est bien 0 par défaut. L'idée, je crois, c'est de ne pas avoir à construire les objets éléments avant d'avoir l'initialisateur. Il est donc prèsqu'idiomatique de définir le tableau vide, puis de le remplir à coup de push_back. L'autre alternatif, si j'ai des itérateurs qui me donne les valeurs initiales, c'est d'utiliser le constructeur à deux itérateurs, c-à-d :
std::vector< int > a( iterBegin, iterEnd ) ;
Si j'écris quelque chose comme :
std::vector< int > a( 10 ) ;
j'initialise avec dix fois le constructeur par défaut (ici, int(), c-à-d 0). C'est rarement intéressant (mais des vecteurs de types arithmétiques pourraient en être une exception).
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Bruno CAUSSE wrote:
dans l'article 43551519$0$28143$626a14ce@news.free.fr,
slowlearner à slowlearner@noreply.org a écrit le 18/10/05
17:30 :
Bon, maintenant que l'histoire des parenthèses/crochets est
réglée, je remarque également que si je ne déclare pas les
tailles des vecteurs, c'est à dire si j'ai : vector<int> a,
b, c, j'ai un magnifique plantage du programme (carrément le
message d'erreur de windows ! vraiment la classe ;-)) et
pour le faire fonctionner, il faut que je passe par la
fonction push_back().
Pourquoi ?!?
La taille size n'etant pas definie a la creation, (size 0 par
defaut?), l'operateur [] ne fonctionne pas pour l'ajout
d'element, contrairement a push_back() qui est fait pour.
La taille est bien 0 par défaut. L'idée, je crois, c'est de ne
pas avoir à construire les objets éléments avant d'avoir
l'initialisateur. Il est donc prèsqu'idiomatique de définir le
tableau vide, puis de le remplir à coup de push_back. L'autre
alternatif, si j'ai des itérateurs qui me donne les valeurs
initiales, c'est d'utiliser le constructeur à deux itérateurs,
c-à-d :
std::vector< int > a( iterBegin, iterEnd ) ;
Si j'écris quelque chose comme :
std::vector< int > a( 10 ) ;
j'initialise avec dix fois le constructeur par défaut (ici,
int(), c-à-d 0). C'est rarement intéressant (mais des vecteurs
de types arithmétiques pourraient en être une exception).
--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
dans l'article 43551519$0$28143$, slowlearner à a écrit le 18/10/05 17:30 :
Bon, maintenant que l'histoire des parenthèses/crochets est réglée, je remarque également que si je ne déclare pas les tailles des vecteurs, c'est à dire si j'ai : vector<int> a, b, c, j'ai un magnifique plantage du programme (carrément le message d'erreur de windows ! vraiment la classe ;-)) et pour le faire fonctionner, il faut que je passe par la fonction push_back().
Pourquoi ?!?
La taille size n'etant pas definie a la creation, (size 0 par defaut?), l'operateur [] ne fonctionne pas pour l'ajout d'element, contrairement a push_back() qui est fait pour.
La taille est bien 0 par défaut. L'idée, je crois, c'est de ne pas avoir à construire les objets éléments avant d'avoir l'initialisateur. Il est donc prèsqu'idiomatique de définir le tableau vide, puis de le remplir à coup de push_back. L'autre alternatif, si j'ai des itérateurs qui me donne les valeurs initiales, c'est d'utiliser le constructeur à deux itérateurs, c-à-d :
std::vector< int > a( iterBegin, iterEnd ) ;
Si j'écris quelque chose comme :
std::vector< int > a( 10 ) ;
j'initialise avec dix fois le constructeur par défaut (ici, int(), c-à-d 0). C'est rarement intéressant (mais des vecteurs de types arithmétiques pourraient en être une exception).
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34