Rechercher : dans
Par :

Taille tableau c++

Dernière réponse le 17 avr 2008 à 16:00:24 doudou, le 17 avr 2008 à 15:37:01 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « taille tableau c++ » dans :
Manipulations élémentaires des tableaux sous MatLab VoirSommaire I. Stockage des tableaux II. L'indexation linéaire II.1. Accéder à un élément d'un tableau en utilisant l'indexation linéaire II.2. Passer d'une indexation à l'autre II.2.1. La fonction ind2sub II.2.2. La fonction sub2ind III. La...
Les structures en langage C VoirDifférence entre une structure et un tableau Un tableau permet de regrouper des éléments de même type, c'est-à-dire codés sur le même nombre de bits et de la même façon. Toutefois, il est généralement utile de pouvoir rassembler des éléments de...
Langage C - Les tableaux VoirType de données complexes Les variables, telles que nous les avons vues, ne permettent de stocker qu'une seule donnée à la fois. Or, pour de nombreuses données, comme cela est souvent le cas, des variables distinctes seraient beaucoup trop lourdes...
Les tableaux en langage C++ VoirType de données complexes Les variables, telles que nous les avons vues, ne permettent de stocker qu'une seule donnée à la fois. Or, pour de nombreuses données, comme cela est souvent le cas, des variables distinctes seraient beaucoup trop lourdes...

1

lefoufighter, le 17 avr 2008 à 15:44:55
  • +1

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';

Il n'existe que deux choses infinies, l'univers et la bêtise humaine...
mais pour l'univers, je n'ai pas de certitude absolue. <Albert Einstein>

Répondre à lefoufighter

2

doudou, le 17 avr 2008 à 15:54:01

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 :(

Répondre à doudou

3

lefoufighter, le 17 avr 2008 à 15:57:39

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)


Il n'existe que deux choses infinies, l'univers et la bêtise humaine...
mais pour l'univers, je n'ai pas de certitude absolue. <Albert Einstein>

Répondre à lefoufighter

4

 doudou, le 17 avr 2008 à 16:00:24

Je suis embetante lol
et comment faire pour size si je n'ai qu'un pointeur vers ce tableau.?

Répondre à doudou