Tableau /C++
Fermé
nawas
-
22 nov. 2009 à 18:12
DrCrow Messages postés 387 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 20 août 2014 - 24 nov. 2009 à 20:45
DrCrow Messages postés 387 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 20 août 2014 - 24 nov. 2009 à 20:45
A voir également:
- Tableau /C++
- Tableau croisé dynamique - Guide
- Afficher un tableau en c - Forum C
- Tableau ascii - Guide
- Le fichier contient une liste de prénoms. triez ce tableau par ordre alphabétique des prénoms. quel mot est formé par les 6 premières lettres de la colonne code ? - Forum Bureautique
- Tableau word - Guide
5 réponses
nobie-cs
Messages postés
155
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
15 mai 2010
17
22 nov. 2009 à 19:07
22 nov. 2009 à 19:07
tu peut utiliser une list
un truc de se genre
un truc de se genre
// list::assign
#include <iostream>
#include <list>
using namespace std;
int main ()
{
list<int> first;
list<int> second;
first.assign (7,100); // 7 ints with value 100
second.assign (first.begin(),first.end()); // a copy of first
int myints[]={1776,7,4};
first.assign (myints,myints+3); // assigning from array
cout << "Size of first: " << int (first.size()) << endl;
cout << "Size of second: " << int (second.size()) << endl;
return 0;
}
DrCrow
Messages postés
387
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
20 août 2014
18
22 nov. 2009 à 19:51
22 nov. 2009 à 19:51
ya aussi les std::vector , connu aussi sous le noms de tableau dynamique, ils sont du genre tableau, mais leur taille peut changer au cours du programmme.
nobie-cs
Messages postés
155
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
15 mai 2010
17
22 nov. 2009 à 19:57
22 nov. 2009 à 19:57
très intéressant tu peut faire un exemple simple de sa utilisation
sa marche aussi en C ??
sa marche aussi en C ??
Pacorabanix
Messages postés
3245
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
658
>
nobie-cs
Messages postés
155
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
15 mai 2010
22 nov. 2009 à 20:10
22 nov. 2009 à 20:10
non ça ne marche pas en C.
j'ai peut-être fait une ou deux petites erreurs.
//à ràjouter au début : #include <vector>
std::vector<int> monTableau;
for (int i=0; i<10; i++) {
monTableau.pushback(5*i);
}
//monTableau contient la table de 5 (de 0 à 45)
monTableau[20] = 3; //ceci donne une erreur car monTableau n'est pas de la bonne taille, il est de taille 10.
monTableau.resize(30);
monTableau[20] = 3; // valide car monTableau est de taille 30.
j'ai peut-être fait une ou deux petites erreurs.
DrCrow
Messages postés
387
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
20 août 2014
18
>
Pacorabanix
Messages postés
3245
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
22 nov. 2009 à 20:14
22 nov. 2009 à 20:14
:D, resize() , sa prend deux paramétre. (la taille et la valeur.) ;)
et push_back(), sa c'crit de cet faàon et pas pushback() , :ppp. ;)
et push_back(), sa c'crit de cet faàon et pas pushback() , :ppp. ;)
abkhalil
Messages postés
3
Date d'inscription
lundi 23 novembre 2009
Statut
Membre
Dernière intervention
24 novembre 2009
24 nov. 2009 à 19:20
24 nov. 2009 à 19:20
Merci DrCrow pour l'astuce des "vector" s!! mais je ne sais pas si ça peut marcher pour un truc à deux dimensions?
DrCrow
Messages postés
387
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
20 août 2014
18
>
abkhalil
Messages postés
3
Date d'inscription
lundi 23 novembre 2009
Statut
Membre
Dernière intervention
24 novembre 2009
24 nov. 2009 à 20:45
24 nov. 2009 à 20:45
Pour un vector deux dimensions std::vector < <std::vector<int > > nom_tab;
faut bien laisser d'espace entre les "< < " :D, pour ne pas le confondre avec les fluX,
faut bien laisser d'espace entre les "< < " :D, pour ne pas le confondre avec les fluX,
DrCrow
Messages postés
387
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
20 août 2014
18
22 nov. 2009 à 20:08
22 nov. 2009 à 20:08
en C, je crois pas, et je ne sait pas . :( , :ppp
avant in faut inclure le headers
#include <vector>
//On creer notre tableau dynamique.
std::vector <int> Tabl(5);
<int> ceci est le type de tableau,
Tabl, c'est le nom :pp
(5), c'est la taille.
et ben pour les utilisation, voici qulque exemple.
Tabl.push_back(2); //ajoute une case avec la valeur de 2;
Tabl.pop_back(); //enleve une case du tableau.
Tabl.clear();//tout éffacer, reinitialiser a zéro, case = 0, :pp
Tabl.assign(5,3); //recreer le Tabl avec 5 case dont la valeur est 3, donc, c comme, un clear(); et puis 5 push_back(3);
Tabl.resize(2,0); //redimensionner le tableau, ajouter ou enlever les acse qui manque , e les remplaçant par la valeur 0; si notre tableau contient 1 case avec la valeur 8, on ajoute une case , pour arriver a 2 avec la valeur 0,
Ouuuf, c tout, :D
et plein d'autre ....
avant in faut inclure le headers
#include <vector>
//On creer notre tableau dynamique.
std::vector <int> Tabl(5);
<int> ceci est le type de tableau,
Tabl, c'est le nom :pp
(5), c'est la taille.
et ben pour les utilisation, voici qulque exemple.
Tabl.push_back(2); //ajoute une case avec la valeur de 2;
Tabl.pop_back(); //enleve une case du tableau.
Tabl.clear();//tout éffacer, reinitialiser a zéro, case = 0, :pp
Tabl.assign(5,3); //recreer le Tabl avec 5 case dont la valeur est 3, donc, c comme, un clear(); et puis 5 push_back(3);
Tabl.resize(2,0); //redimensionner le tableau, ajouter ou enlever les acse qui manque , e les remplaçant par la valeur 0; si notre tableau contient 1 case avec la valeur 8, on ajoute une case , pour arriver a 2 avec la valeur 0,
Ouuuf, c tout, :D
et plein d'autre ....
nobie-cs
Messages postés
155
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
15 mai 2010
17
22 nov. 2009 à 20:18
22 nov. 2009 à 20:18
merci je connais pas gros chose en c++ par contre C ou java
DrCrow
Messages postés
387
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
20 août 2014
18
22 nov. 2009 à 20:19
22 nov. 2009 à 20:19
et ben, t'a qu'a utiliser les tableau ordinaire ^^
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Pacorabanix
Messages postés
3245
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
658
22 nov. 2009 à 20:33
22 nov. 2009 à 20:33
oups, je viens de voir un truc : tu voulais un tableau à deux dimensions.
Dans ce cas tu n'as qu'à faire un vector de pointeurs vers d'autres vector. (Un vector de vector ne fonctionnerait pas très bien à cause d'un problème de taille trop variable)
Dans ce cas tu n'as qu'à faire un vector de pointeurs vers d'autres vector. (Un vector de vector ne fonctionnerait pas très bien à cause d'un problème de taille trop variable)
DrCrow
Messages postés
387
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
20 août 2014
18
22 nov. 2009 à 20:36
22 nov. 2009 à 20:36
tu peut téeXpliké encore, jé pa bien compris le probléme de probleme. :DD.
Pacorabanix
Messages postés
3245
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
658
>
DrCrow
Messages postés
387
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
20 août 2014
22 nov. 2009 à 20:45
22 nov. 2009 à 20:45
c'est un peu technique.
le type Vector permet de garder un avantage assez important des tableaux en C / C++ : le fait que toutes les données soient à la suite en mémoire.
Tu pourrais faire un vector < vector<int> > par exemple pour stocker un tableau en deux dimensions avec des int. Mais comme touts les éléments sont stockés à la suite en mémoire, le c++ assigne la même taille à tous les éléments.
Ex : tu as 8 vector<int> avec dedans : {1, 2, 3, 4, 5}, {1, 2 , 3, ... 37}, ..., {1, 2, 3, ... 100}.
Le premier est de taille 5, le dernier de taille 100.
Si tu fais un vector< vector<int>> rempli avec ces tableaux, le C++ est obligé de donner une taille fixe pour chacun, donc allouer au moins 100 places pour chaque vector, même si c'est inutile car les autres sont bien plus petits.
Autre problème, si tu ajoutes encore un autre vector<int> dedans encore plus grand, alors le C++ sera obligé de revoir à la hausse la taille qu'il alloue pour chaque élément, et devra recréer l'intégralité du vector< vector<int> > en mémoire, ce qui implique du temps d'exécution et de l'espace mémoire.
le type Vector permet de garder un avantage assez important des tableaux en C / C++ : le fait que toutes les données soient à la suite en mémoire.
Tu pourrais faire un vector < vector<int> > par exemple pour stocker un tableau en deux dimensions avec des int. Mais comme touts les éléments sont stockés à la suite en mémoire, le c++ assigne la même taille à tous les éléments.
Ex : tu as 8 vector<int> avec dedans : {1, 2, 3, 4, 5}, {1, 2 , 3, ... 37}, ..., {1, 2, 3, ... 100}.
Le premier est de taille 5, le dernier de taille 100.
Si tu fais un vector< vector<int>> rempli avec ces tableaux, le C++ est obligé de donner une taille fixe pour chacun, donc allouer au moins 100 places pour chaque vector, même si c'est inutile car les autres sont bien plus petits.
Autre problème, si tu ajoutes encore un autre vector<int> dedans encore plus grand, alors le C++ sera obligé de revoir à la hausse la taille qu'il alloue pour chaque élément, et devra recréer l'intégralité du vector< vector<int> > en mémoire, ce qui implique du temps d'exécution et de l'espace mémoire.
DrCrow
Messages postés
387
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
20 août 2014
18
>
Pacorabanix
Messages postés
3245
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
22 nov. 2009 à 20:50
22 nov. 2009 à 20:50
OkéOké, je crois ke Jé Capté un peu :DD, et merci pour le paragraphe ;) :)) é Bonne Nuit
Pacorabanix
Messages postés
3245
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
658
>
DrCrow
Messages postés
387
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
20 août 2014
22 nov. 2009 à 21:04
22 nov. 2009 à 21:04
EDIT : Je me suis trompé de lien avant dsl ! j'ai édité ce message
http://www.cplusplus.com/reference/vector/vector/
http://www.cplusplus.com/reference/vector/vector/
abkhalil
Messages postés
3
Date d'inscription
lundi 23 novembre 2009
Statut
Membre
Dernière intervention
24 novembre 2009
>
Pacorabanix
Messages postés
3245
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
24 nov. 2009 à 18:56
24 nov. 2009 à 18:56
Merci Pacorabanix, gentiman,!!! votre suggestion est vraiment très efficace, j'espère être à la hauteur pour manipuler ces vector de pointeurs. si j'y arrive je vous contacterais.