IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

new et redimensionnement


Sujet :

C++

  1. #1
    Membre confirmé
    Inscrit en
    Août 2002
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 74
    Par défaut new et redimensionnement
    J'utilise new pour allouer les mémoires dans mon application. Je souhaite changer la taille du tableau. En C, on aurait typiquement utilisé la fonction realloc. Il n'y a pas d'équivalent en C++. Est ce que la seule méthode serait de créer un nouveau tableau et de tout copier ? Y a t il des alternatives, des idées ?
    Sincèrement.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 30
    Par défaut
    Peu tu donner un petit exemple de ce que tu veux faire réélement pour que l'on puisse t'aider ?

  3. #3
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    En C++, un tableau est un vector.
    La gestion est complètement dynamique, via des fonctions pusk_back() etc...
    On peut toutefois le redimensionner à la main par la fonction resize (pour des raisons de performance, ou d'encombrement mémoire en général)

  4. #4
    Membre confirmé
    Inscrit en
    Août 2002
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 74
    Par défaut
    Voici un petit exemple :
    int* st;

    st = new int [2];
    st[0] = 3;
    st[1] = 4;
    st[2] = 7;
    st[3] = 37;
    st[4] = 17;

    Le tableau est initialement dimensionné à 2.
    Je souhaite après les 2 premiers '=', le faire passer à 10.

    Je ne suis pas arrivé à faire un resize.

  5. #5
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Utilise du C++, et non pas du C (cf FAQ)
    La STL t'offre énormément de possibilités:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    std::vector <int> st;
    st.push_back(3);
    st.push_back(4);
    st.push_back(7);
    st.push_back(37);
    st.push_back(17);
    C'est bcp mieuc, et nettement plus propre:
    * Pas de resize
    * Plus pratique
    * Plus clair

  6. #6
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    La réponse à ta question est dans la :
    http://c.developpez.com/faq/cpp/?pag...NTEURS_realloc

  7. #7
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    J'utilise new pour allouer les mémoires dans mon application. Je souhaite changer la taille du tableau.
    Tu peux pas.
    Utilise un allocateur ou mieux, un std::vector.

  8. #8
    Invité
    Invité(e)
    Par défaut
    la bibliotheque STL (standard template library) du standard C++ fourni tout en ensemble de classes génériques appelées communément "conteneurs".
    il y en a beaucoup, et leur choix dépend de l'utilisation que tu vas en avoir.

    si tu as beaucoup de redimentionnement a faire, des insertions d'élements a n'importe quelle position, std::vector<> est certainement la classe la mieux adaptée.
    sinon, il existe également les classes std::list<> et std::deque<>.
    STL fournit aussi des tableaux associatifs comme le std::map<,>
    regarde sur ce lien pour un appercu général de ce que fournit STL :
    http://msdn2.microsoft.com/en-us/library/1fe2x6kt.aspx
    n'hesite pas a regarder chaque conteneur pour savoir lequel est plus adapté a ton besoin ; ceci peut jouer nettement sur les performances de ton application (enfin, a condition d'avoir un volume conséquant quand meme)...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Kylix] Fenêtres non redimensionnables
    Par fred78 dans le forum EDI
    Réponses: 2
    Dernier message: 01/12/2002, 14h08
  2. [VB6] [Interface] Redimensionnement automatique
    Par ychalan dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/09/2002, 18h32
  3. redimensionnement d'une JWindow
    Par mbp566 dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 02/08/2002, 03h41
  4. Redimensionnement des Paquets IP sur un Réseau Local
    Par Bonoboo dans le forum Développement
    Réponses: 2
    Dernier message: 12/07/2002, 15h40
  5. Redimensionnement d'une surface
    Par Freakazoid dans le forum DirectX
    Réponses: 4
    Dernier message: 01/07/2002, 22h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo