Taille tableau c++

Fermé
doudou - 17 avril 2008 à 15:37
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 26 oct. 2011 à 23:59
Bonjour,
je suis vraiment debutante dans la programmation et j'ai unenorme probleme.
je vous explique, je dispose d'un tableau dont je connais pas la taille tout ce que je peux faire c'est de l'initialiser au debut de la fonction apres la taille de ce tableau varie selon un certain parametre, a un certain moment je veux recuperer sa taille pour faire une boucle sur ce tableu et je ne dispose que d'un pointeur sur ce tableau.
j'ai trouvé que je peux utiliser la fonction length mais je ne sais pas trop comment l'utiliser.
sinon j'ai pensé a mettre une case en plus dans mon tableau pour indiquer la fin du tableu mais le probleme est comment remplir le tableau sans y toucher a la derniere case!!
qu'est ce que vous me conseillez et si possible comment faire aussi!!
merci bcp pour votre aide
Doudou

1 réponse

lefoufighter Messages postés 277 Date d'inscription lundi 20 novembre 2006 Statut Membre Dernière intervention 12 avril 2018 99
17 avril 2008 à 15:44
bonjour,
tu ferais mieux de laisser tomber les tableaux et d'utiliser les Vector qui sont nettement plus simple à utiliser dans ton cas, voici quelques exemples d'utilisation

#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>

using std::cout;

int main()
{
    // créer un tableau d'entiers vide
    std::vector<int> v;
    
    // ajouter l'entier 10 à la fin
    v.push_back( 10 );

    // afficher le premier élément (10)
    cout << v.front() << '\n';

    // afficher le dernier élément (10)
    cout << v.back() << '\n';

    // enlever le dernier élément
    v.pop_back(); // supprime '10'

    // le tableau est vide
    if ( v.empty() )
    {
        cout << "Tout est normal : tableau vide\n";
    }

    // redimensionner le tableau
    // resize() initialise tous les nouveaux entiers à 0
    v.resize( 10 );
    
    // quelle est sa nouvelle taille ?
    cout << v.size() << '\n'; // affiche 10

    // sa taille est de 10 : on peut accéder directement aux
    // 10 premiers éléments
    v[ 9 ] = 5;

    // intitialiser tous les éléments à 100
    std::fill( v.begin(), v.end(), 100 );

    // vider le tableau
    v.clear(); // size() == 0

    // on va insérer 50 éléments
    // réserver (allouer) de la place pour au moins 50 éléments
    v.reserve( 50 );

    // véridier que la taille n'a pas bougé (vide)
    cout << v.size() << '\n';

    // capacité du tableau = nombre d'éléments qu'il peut stocker
    // sans devoir réallouer (modifié grâce à reserve())
    cout << v.capacity() << '\n'; // au moins 50, sûrement plus

    for ( int i = 0; i < 50; ++i )
    {
        // grâce à reserve() on économise de multiples réallocations
        // du fait que le tableau grossit au fur et à mesure
        v.push_back( i );
    }

    // afficher la nouvelle taille
    cout << v.size() << '\n'; // affiche 50

    // rechercher l'élément le plus grand (doit être 49)
    cout << *std::max_element( v.begin(), v.end() ) << '\n';

    // tronquer le tableau à 5 éléments
    v.resize( 5 );

    // les trier par ordre croissant
    std::sort( v.begin(), v.end() );

    // parcourir le tableau
    for ( size_t i = 0, size = v.size(); i < size; ++i )
    {
        // attention : utilisation de l'opérateur []
        // les accès ne sont pas vérifiés, on peut déborder !
        cout << v[ i ] << '\t';        
    }
    cout << '\n';
5
merci bcp pour la rapidite, le probleme est que je suis obligée d'utiliser un tableau c'est pas moi c'est le programme tel qu'on me l'a donné et je suis obligée de respecter la structure :(
0
lefoufighter Messages postés 277 Date d'inscription lundi 20 novembre 2006 Statut Membre Dernière intervention 12 avril 2018 99 > doudou
17 avril 2008 à 15:57
ha ok dommage ;-)
je me souviens plus de tout mais il me semble qu'il y avait un truc du genre
sizeof(tonTableau)/sizeof(int) et ca te donne le nombre d'elements dans ton tableau (si il s'agit bien d'un tableau de int)

0
doudou > lefoufighter Messages postés 277 Date d'inscription lundi 20 novembre 2006 Statut Membre Dernière intervention 12 avril 2018
17 avril 2008 à 16:00
je suis embetante lol
et comment faire pour size si je n'ai qu'un pointeur vers ce tableau.?
0
youness06 Messages postés 1 Date d'inscription lundi 13 juin 2011 Statut Membre Dernière intervention 13 juin 2011
13 juin 2011 à 23:15
int n=sizeof (t)/sizeof (int);
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
14 juin 2011 à 01:23
@youness06,
Non, si c'est un pointeur sur le tableau comme elle le dit ta solution ne marchera pas.
En plus de cela, le post date de 3 ans, je doute qu'elle lise la solution ^^.
0