Quel est l'équivalent de vector<int> (c++) en C ? Et quel est celui de ....push_

ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 - 25 oct. 2006 à 19:15
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 - 25 oct. 2006 à 23:40
Salut,





Quel est l'équivalent de vector (c++) en C ?
Et quel est celui de ....push_back(...); ?

Merci d'avance et à bientôt!

A+

Nico

5 réponses

rrk275 Messages postés 540 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 1 octobre 2007 2
25 oct. 2006 à 19:28
Rien à ma connaisance..

Louis
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
25 oct. 2006 à 19:50
Rien, mais si tu veut déclarer un vecteur d'int en c : int veteur[100] (100 taille du tableau -> 100*4Bytes.) En c tu ne peut déclarer des tableaux (vecteurs) quand connaissant la taille. Sinon, go to liste chainée .

++
deck_bsd

[http://deck-bsd.eurower.net]
0
rrk275 Messages postés 540 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 1 octobre 2007 2
25 oct. 2006 à 21:57
Ce que tu dit , deck_bsd n'est pas faux mais n'oublie pas que les vecteurs aurait pu etre implémenté en C , avec des mallocs , et d'autres subtilités, en obtient facilement un vecteur beaucoup moins ptimisé mais si c'est pas pour faire un travail trop intense, ca suffit largement..
Louis
0
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
25 oct. 2006 à 23:39
donc ... pour creer un vecteur, 2 possibilités :
 * soit un tableau static (si la taille est constante ou bornée):
    int[max] vecteur; // equivalent
    ou plus generalement
    montype* vecteur = (montype*)malloc(max*sizeof(montype));

* soit par une liste(si la taille varie bcp):
typedef struc maillon maillon;
struct {
    montype value;
    maillon* next;
}maillon;
...
maillon* vecteur;
vecteur = malloc(sizeof(maillon));
vecteur->value = val1;
0

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

Posez votre question
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
25 oct. 2006 à 23:40
// Il faut transformer cette class en struct C
// donc sortir les méthodes, c'est tout

class vInt
{
  int* t;
  int taille;
  int pos;
    vInt(int nbr) {t new int[nbr]; taille nbr; pos = 0}
  ~vInt() {if(t) delete[] t;}

  // Ajoute elem a la fin du tab
  void push_back(int val)
  {
      if( pos == taille )
         // copie les donnees existantes 
         // Realloue *t avec double taille
      
      t[pos++] = val;
  }
}
0
Rejoignez-nous