bonjour ;
je suis débutant en c++, en java pour parcourir et pour savoir le nombre de cases d'un tableau j'utilise lenght .
en c++ il y'a sizeof(tab) , mais elle rend la taille en octet et pas en nombre de case .
Merci par avance
Version imprimable
bonjour ;
je suis débutant en c++, en java pour parcourir et pour savoir le nombre de cases d'un tableau j'utilise lenght .
en c++ il y'a sizeof(tab) , mais elle rend la taille en octet et pas en nombre de case .
Merci par avance
Bonjour
En C++, c'est size : http://www.cplusplus.com/reference/vector/vector/size/
Depuis C++11, on peut faire ceci :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 // g++ -Wall -Wextra -Wconversion -std=c++11 -pedantic -O3 -march=native -fopenmp main.cpp -o main && ./main #include <iostream> #include <vector> int main() { std::vector<int> v({0, 1, 2, 3, 4, 5, 6}); // Parcours "à l'ancienne" for (std::size_t i = 0; i < v.size(); ++i) { std::cout << v[i] << std::endl; } std::cout << std::endl; // Parcours C++11 (range based iterator) for (auto /*const &*/ e : v) { std::cout << e << std::endl; } std::cout << std::endl; // Parcours avec les itérateurs for (auto it = v.begin(); it != v.end(); ++it) { std::cout << *it << std::endl; } std::cout << std::endl; return 0; }
Une remarque cependant,
size fonctionne avec les conteneurs stl par exemple vector.
Si tu utilise un tableau
tab contiens l'adresse du premier élément mais pas (à ma connaissance) d'informations sur la taille.Code:
1
2
3
4
5 int Entries = 42 int* tab = new int[Entries] // Tu accèdes aux contenu de tab via tab[index]
C'est à toi de te débrouiller pour avoir l'information sous la main (par exemple en passant la taille du tableau comme argument à la fonction qui l'utilise ou en encapsulant ton tableau dans une structure/classe).
Une excellent raison pour préferer les vecteurs lorsque tu n'as pas de contraintes de performance/mémoire.
Une remarque aussi, C++11 n'est pas encore implémenté dans tous les compilo donc pour l'instant attention.
Ouais mais typiquement gérer des tableaux a la main avec new, ça fait partie des choses qu'il ne faut pas faire.
Il faut toujours préférer les std::vector à un tableau alloue avec new, quitte à utiliser un allocateur spécifique dans les cas qui le demandent.
Tu as une gestion automatique de la mémoire et ca, ca n'a pas de prix !
Et sinon le C++11 est supporté par tous les compilateurs standards "mainstream".
j'ai essayé cela
mais j'ai une erreur avec tab.size() ;Code:
1
2
3
4
5
6 int tab [4]; tab[0]=12; tab[1]= 42; tab[2]= 72; cout<<"la taille du tab" << tab.size() << endl;
Code:
1
2
3
4
5 vector<int> tab(4); tab[0]=12; tab[1]= 42; tab[2]= 72; cout<<"la taille du tab" << tab.size() << endl;