Tableau /C++

nawas -  
DrCrow Messages postés 387 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
S V P, comment declarer et utiliser un tableau à deux dimension dont la taille est variable !!!
A voir également:

5 réponses

nobie-cs Messages postés 155 Date d'inscription   Statut Membre Dernière intervention   17
 
tu peut utiliser une list
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;
}
0
DrCrow Messages postés 387 Date d'inscription   Statut Membre Dernière intervention   19
 
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.
0
nobie-cs Messages postés 155 Date d'inscription   Statut Membre Dernière intervention   17
 
très intéressant tu peut faire un exemple simple de sa utilisation
sa marche aussi en C ??
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663 > nobie-cs Messages postés 155 Date d'inscription   Statut Membre Dernière intervention  
 
non ça ne marche pas en C.

//à 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.
0
DrCrow Messages postés 387 Date d'inscription   Statut Membre Dernière intervention   19 > Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention  
 
: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. ;)
0
abkhalil Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Merci DrCrow pour l'astuce des "vector" s!! mais je ne sais pas si ça peut marcher pour un truc à deux dimensions?
0
DrCrow Messages postés 387 Date d'inscription   Statut Membre Dernière intervention   19 > abkhalil Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
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,
0
DrCrow Messages postés 387 Date d'inscription   Statut Membre Dernière intervention   19
 
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 ....
0
nobie-cs Messages postés 155 Date d'inscription   Statut Membre Dernière intervention   17
 
merci je connais pas gros chose en c++ par contre C ou java
0
DrCrow Messages postés 387 Date d'inscription   Statut Membre Dernière intervention   19
 
et ben, t'a qu'a utiliser les tableau ordinaire ^^
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
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)
0
DrCrow Messages postés 387 Date d'inscription   Statut Membre Dernière intervention   19
 
tu peut téeXpliké encore, jé pa bien compris le probléme de probleme. :DD.
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663 > DrCrow Messages postés 387 Date d'inscription   Statut Membre Dernière intervention  
 
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.
0
DrCrow Messages postés 387 Date d'inscription   Statut Membre Dernière intervention   19 > Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention  
 
OkéOké, je crois ke Jé Capté un peu :DD, et merci pour le paragraphe ;) :)) é Bonne Nuit
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663 > DrCrow Messages postés 387 Date d'inscription   Statut Membre Dernière intervention  
 
EDIT : Je me suis trompé de lien avant dsl ! j'ai édité ce message

http://www.cplusplus.com/reference/vector/vector/
0
abkhalil Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   > Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention  
 
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.
0