begin process at 2012 05 30 18:09:44
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

Tableau, vector, list ou array????


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Tableau, vector, list ou array????

mardi 1 juin 2010 à 15:22:53 | Tableau, vector, list ou array????

eupeup

Bonjour à tous,

j'ai une interrogation par rapport à l'utilisation d'un tableau...
Je dois manipuler une matrice de double et de taille fixe...
Sachant que je ne souhaite pas forcement la parcourir dans tous les sens, mais uniquement accéder à un élément de cette matrice puis le remplacer le cas échéant, qu'est ce qui est le mieux adapté...

Pour spécifier, j'ai une boucle de boucle dans laquelle je fais des calculs puis je modifie ma matrice au fur et à mesure de ces boucles, donc au début je pensais à un vector de vector, et l'accès à un élément se ferait via : monVector.begin()+compteur de boucle
Mais le remplcement d'un élément nécessite un erase suivi d'un insert? Est ce bien efficace, y t il pas des soucis de mémoire (car il y a bcp de remplacement de valeur)
Dans ce cas, l'utilisation d'un tableau à 2dim de double tou simple ne serait-il pas le mieux? ou une list ou un array?

Merci d'avance!!!

Peupeu

mardi 1 juin 2010 à 15:56:42 | Re : Tableau, vector, list ou array????

CptPingu

Administrateur CodeS-SourceS
Si tu es en C++, tu oublies les array du C.

Le vecteur est là si tu dois faire peux d'insertion, et si tu cherches à modifier des valeurs.
La liste est pratique si tu ajoutes souvent des éléments, et que tu les parcours. Elle ne te permet pas d'insérer un élément directement.
La queue/dequeue est pratique si tu ajoutes très souvent des éléments en début et fin de liste, et que tu retires des éléments en début/fin de liste.

Si tu dois remplacer un élément à chaque fois, et que ta taille est fixe dans les deux dimensions, alors je te conseille soit:
- Un vector de vector que tu dimensionnes à la bonne taille dès le début via "resize". Tu remplis alors juste ce qu'il faut.
- Un boost::multi_array, dont tu trouveras la documentation ici: http://www.boost.org/doc/libs/1_43_0/libs/multi_array/doc/user.html#sec_example

_____________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
mardi 1 juin 2010 à 16:19:45 | Re : Tableau, vector, list ou array????

eupeup

Et bien, j'ai peu d'insertion, mais pas mal de modification...
Comme je connais les vectors, je vais me diriger vers cette solution...
Néanmoins, pour modifier un élément de mon vector, ne dois pas faire un erase suivi d'un insert?
Parce que du coup, ca va faire pas mal d'insertion?

Peu

mardi 1 juin 2010 à 16:32:01 | Re : Tableau, vector, list ou array????

CptPingu

Administrateur CodeS-SourceS
Absolument pas ! Et heureusement :)

Exemple avec une matrice de 4x6:

Code C/C++ :
#include <iostream>
#include <vector>

typedef std::vector<std::vector<int> > Matrix;
typedef Matrix::iterator iter;
typedef Matrix::const_iterator citer;
typedef std::vector<int>::const_iterator subIter;

void displayWithIterator(const Matrix& m)
{
  for (citer i = m.begin(); i != m.end(); ++i)
  {
    for (subIter j = i->begin(); j != i->end(); ++j)
      std::cout << *j << " ";
    std::cout << std::endl;
  }
}

void displayWithIndex(const Matrix& m)
{
  for (int i = 0; i < m.size(); ++i)
  {
    for (int j = 0; j < m[i].size(); ++j)
      std::cout << m[i][j] << " ";
    std::cout << std::endl;
  }
}


int main()
{
  Matrix tab;

  tab.resize(6);
  for (iter it = tab.begin(); it != tab.end(); ++it)
    it->resize(4);

  tab[0][0] = 45;
  // ...
  tab[5][3] = 18;

  displayWithIterator(tab);
  std::cout << std::endl;
  displayWithIndex(tab);

  return 0;
}


_____________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
mardi 1 juin 2010 à 16:56:59 | Re : Tableau, vector, list ou array????

eupeup

Effectivement, je suis un peu grave, hehe...
Eh bien merci, je vais opter pour cette solution!!!!


Cette discussion est classée dans : tableau, array, vector, list, matrice


Répondre à ce message

Sujets en rapport avec ce message

STL et C++ [ par tanguy_laverdure ] Bonjour, Quelqu'un saurait me dire comment choisir entre les list, vector, map et deque de la STL.Je croix comprendre que les temps d'acces sont a peu Afficher un tableau de pixels [ par elinep ] Donc comment peut on en win32 afficher une image que l'on a sous la forme d'une matrice de pixels?J'ai essaye en faisant CreateBitmap() puis en modifi tableau multidimentionnel en C++ [ par paskouaouch ] Bonjour, je souhaiterais savoir s'il ya moyen de créer des tableau en C++ de dimention n (n= 3, 4, 5 ou plus...) sans utiliser double***** tab,vector question sur les pointeur et tableau et matrice [ par Battousai ] bonjour a tous,ma question se porte comme indiqué si dessus sur l'utilisation des pointeur avec les tableau et surtout les matrices ou plus.d'abord j' [C++ 7(.NET)]Création d'un vector ou tableau Object [ par sfouilloux ] bjr,comment créer un tableau d'objet ou un vecteur en c++ managé sous VS.NET 2003.Merci MULTIPLICATION D'UNE MATRICE PAR UN VECTEUR [ par jfk20004 ] Quelqu'un pourrait il m'expliquer le bout de code suivant tiré d'un prog de raytrace .Cette partie est censée multiplier une matriceet un vecteur.Je n vector & list [ par c2millet ] Bjr à tousVoilà en fait j'ai encore un peu de mal à savoir qd utiler un vector ou une list, j'ai du mal à voir la l'intéret d'utiliser l'un plustot qu STL vector et tableau [ par cybermax62 ] j'ai une petite question sur la classe template vector. je sais que c'est possible d'initiliser un vector avec un tableau point de vue C (char[]). j'a declaration d'une matrice dans le prototype d'une fonction ?? [ par mrdaryx ] Bonnjour.J'aimerais savoir comment déclarer une matrice (tableau[lignes][colonnes]) dans le prototype de ma fonction car quand je met :void fonction(t probleme SKD [ par Arnaud16022 ] helloje suis sur VC6 et je voudrais charger des modeles md2 sous openGL. que faire? Évidemment un petit tour chez Digiben!! (bon je sais qu'il existe


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,811 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales