Taille tableau c++

[Fermé]
Signaler
-
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
-
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
A voir également:

1 réponse

Messages postés
277
Date d'inscription
lundi 20 novembre 2006
Statut
Membre
Dernière intervention
12 avril 2018
99
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

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
1
Date d'inscription
lundi 13 juin 2011
Statut
Membre
Dernière intervention
13 juin 2011

int n=sizeof (t)/sizeof (int);
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 773
@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 ^^.
ça peut toujours servir. d'ailleurs je me demandais si il y a un moyen de parcourir un tableau sans connaitre sa taille. une solution avec les iterators ou avec for each???
Merci des réponses
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 304
iterator = pas un tableau mais un vector
for each : pas C++ (ou alors la dernière version), éventuellement java.
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 773
fregux,
Si tu as un tableau, tu en déduis la taille avec sizeof.
Par exemple :
int tab[]={....};
for(int i=0;i<sizeof tab/sizeof *tab;i++) {
   ...;
}