Fonction size de <vector> en C++

Classe conteneur C++ <vector>


sizeest l'une des fonctions les plus couramment utilisées et fondamentales de vector, utilisée pourObtenir le nombre d'éléments dans le conteneur。

sizeest une fonction membre de la classe conteneur, utilisée pourrenvoyer le nombre d'éléments actuellement contenus dans le conteneur. Cette valeur représente la quantité réelle de données stockées dans le vector.

sizeest la fonction la plus fréquemment utilisée lorsqu'on manipule vector, dans des scénarios tels que le parcours en boucle, les vérifications de limites et les évaluations conditionnelles.

Définitions de mots: sizesignifie "size", indiquant le nombre d'éléments dans le conteneur.


Syntaxe de base et paramètres

sizeest une fonction membre de la classe conteneur ; son appel ne nécessite aucun paramètre.

Format de syntaxe

size_type size() const;

Description des paramètres

  • Paramètre: Aucun paramètre
    • sizene prend aucun paramètre.

Description de la fonction

  • Retour: renvoiesize_typeType (généralementsize_t), indiquant le nombre actuel d'éléments dans le conteneur.
  • Effet: renvoie un entier non négatif, indiquant le nombre d'éléments réellement stockés dans le conteneur.
  • Remarque: size()Ce qui est renvoyé, c'est le nombre d'éléments, et non la capacité. Vous pouvez utilisercapacity()Obtenir la capacité.

Exemple

Maîtrisons-le à fond à travers une série d'exemplessizeUtilisation.

Exemple 1 : Utilisation de base - Obtenir le nombre d'éléments

Exemple

#include <iostream>
#include <vector>

int main() {
    // 1. Vector vide
    std::vector<int> emptyVec;
    std::cout << "Taille du vector vide : " << emptyVec.size() << std::endl;

    // 2. Vector avec des éléments
    std::vector<int> numbers = {10, 20, 30, 40, 50};
    std::cout << "Taille du vecteur avec les éléments : " << numbers.size() << std::endl;

    // 3. Utiliser push_back pour ajouter des éléments
    std::vector<std::string> names;
    names.push_back("Alice");
    names.push_back("Bob");
    names.push_back("Charlie");
    std::cout << "Taille après l'ajout de 3 éléments : " << names.size() << std::endl;

    return 0;
}

Sortie attendue :

空 vector 的大小: 0
有元素 vector 的大小: 5
添加 3 个元素后的大小: 3

Analyse du code :

  1. du vecteur videsize()Renvoie 0.
  2. Un vecteur avec 5 éléments renvoie 5.
  3. Chaque foispush_backAprès l'ajout d'un élément,size()augmentera de 1.

Exemple 2 : Utilisation de size() dans une boucle

size()le plus couramment utilisé pour contrôler l'itération d'une boucle.

Exemple

#include <iostream>
#include <vector>

int main() {
    std::vector<int> numbers = {10, 20, 30, 40, 50};

    // Utiliser size() pour contrôler la boucle
    std::cout << "Parcourir tous les éléments : ";
    for(size_t i = 0; i < numbers.size(); ++i) {
        std::cout << numbers[i] << " ";
    }
    std::cout << std::endl;

    // Utiliser size() pour obtenir la limite du parcours inverse
    std::cout << "Parcours inverse : ";
    for(size_t i = numbers.size(); i > 0; --i) {
        std::cout << numbers[i - 1] << " ";
    }
    std::cout << std::endl;

    return 0;
}

Sortie attendue :

遍历所有元素: 10 20 30 40 50
反向遍历: 50 40 30 20 10

Analyse du code :

  • numbers.size()renvoie 5, condition de bouclei < numbers.size()Veiller à éviter tout accès hors limites.
  • Lors d'une itération en sens inverse, en partant desize()commence à décroître jusqu'à 1, puis accède à[i-1]。

Exemple 3 : Utilisation de size() pour un jugement conditionnel

size()peut être utilisé pour diverses vérifications conditionnelles.

Exemple

#include <iostream>
#include <vector>
#include <string>

void processVector(const std::vector<int>& v) {
    if(v.size() == 0) {
        std::cout << "Le conteneur est vide, pas besoin de le gérer" << std::endl;
        return;
    }

    if(v.size() == 1) {
        std::cout << "Le conteneur n'a qu'un seul élément : " << v[0] << std::endl;
        return;
    }

    std::cout << "Le conteneur a " << v.size() << " éléments" << std::endl;

    // Vérifier s'il est suffisamment grand
    if(v.size() >= 10) {
        std::cout << "C'est un grand conteneur" << std::endl;
    }
}

int main() {
    std::vector<int> vide;
    std::vector<int> unique = {42};
    std::vector<int> normal = {1, 2, 3, 4, 5};
    std::vector<int> grand(15, 1);

    processVector(vide);
    processVector(unique);
    processVector(normal);
    processVector(grand);

    return 0;
}

Sortie attendue :

容器为空,无需处理
容器只有一个元素: 42
容器有 5 个元素
这是一个大容器

Analyse du code :

  • size() == 0peut être utilisé pour vérifier si le conteneur est vide.
  • size() == 1peut être utilisé pour vérifier s'il n'y a qu'un seul élément.
  • size() >= 10peut être utilisé pour vérifier si le conteneur est suffisamment grand.

Exemple 4 : Différence entre size() et capacity()

size()Renvoie le nombre d'éléments,capacity()renvoie l'espace de stockage alloué.

Exemple

#include <iostream>
#include <vector>

int main() {
    std::vector<int> numbers;

    std::cout << "État initial :" << std::endl;
    std::cout << " taille : " << numbers.size() << std::endl;
    std::cout << " capacité : " << numbers.capacity() << std::endl;

    // Ajouter des éléments
    for(int i = 0; i < 5; ++i) {
        numbers.push_back(i + 1);
    }

    std::cout << "\nAprès l'ajout de 5 éléments :" << std::endl;
    std::cout << " taille : " << numbers.size() << std::endl;
    std::cout << " capacité : " << numbers.capacity() << std::endl;

    // Utilisez resize pour modifier la taille
    numbers.resize(10);

    std::cout << "\nAprès resize(10) :" << std::endl;
    std::cout << " taille : " << numbers.size() << std::endl;
    std::cout << " capacité : " << numbers.capacity() << std::endl;

    // Utilisez reserve pour préallouer de l'espace
    numbers.reserve(100);

    std::cout << "\nAprès reserve(100) :" << std::endl;
    std::cout << " taille : " << numbers.size() << std::endl;
    std::cout << " capacité : " << numbers.capacity() << std::endl;

    return 0;
}

Sortie attendue :

初始状态:
  size: 0
  capacity: 0
添加 5 个元素后:
  size: 5
  capacity: 5
resize(10) 后:
  size: 10
  capacity: 10
reserve(100) 后:
  size: 10
  capacity: 100

Analyse du code :

  • size()est le nombre d'éléments réels.
  • capacity()est la taille de l'espace de stockage alloué pour les éléments.
  • resize()modifiersize(), s'ajustera égalementcapacity()(si nécessaire).
  • reserve()ne modifie quecapacity(), inchangésize()。

Exemple 5 : Utilisation de size() pour calculer la moyenne

Utilisationsize()fonctionne avec des boucles pour calculer des valeurs statistiques.

Exemple

#include <iostream>
#include <vector>

int main() {
    std::vector<double> scores = {85.5, 92.0, 78.5, 90.0, 88.5};

    // Calculer la somme
    double sum = 0;
    for(size_t i = 0; i < scores.size(); ++i) {
        sum += scores[i];
    }

    // Utiliser size() pour calculer la moyenne
    double average = sum / scores.size();

    std::cout << Scores des étudiants:;
    for(double s : scores) {
        std::cout << s << " ";
    }
    std::cout << std::endl;
    std::cout << Nombre total d'étudiants: << scores.size() << std::endl;
    std::cout << Score total: << sum << std::endl;
    std::cout << Score moyen: << average << std::endl;

    return 0;
}

Sortie attendue :

学生成绩: 85.5 92.0 78.5 90.0 88.5
总人数: 5
总成绩: 434.5
平均分: 86.9

Analyse du code :

  • Utilisationsize()peut facilement calculer la moyenne.
  • sum / scores.size()Calculer le score moyen.

Classe conteneur C++ <vector>

autres extensions