C++ <vector> función size

C++ 容器类 <vector>C++ clase de contenedor <vector>


sizees una de las funciones más comunes y básicas de vector, utilizada paraobtener el número de elementos del contenedor。

sizees una función miembro de la clase contenedor, utilizada paradevolver el número de elementos que contiene actualmente el contenedor. Este valor representa la cantidad de datos realmente almacenados en el vector.

sizees la función más utilizada al operar con vector, para escenarios como iteración, comprobación de límites y evaluación de condiciones.

Definición de la palabra: sizesignifica 'tamaño', e indica el número de elementos en el contenedor.


Sintaxis básica y parámetros

sizees una función miembro de la clase contenedor; no requiere parámetros para llamarla.

Formato de sintaxis

size_type size() const;

Descripción de parámetros

  • Parámetro: sin parámetros
    • sizeNo acepta ningún parámetro.

Descripción de la función

  • Valor de retorno: devuelvesize_typetipo (normalmentesize_t), que indica el número actual de elementos en el contenedor.
  • Efecto: devuelve un entero no negativo que representa el número de elementos realmente almacenados en el contenedor.
  • Nota: size()Lo que devuelve es el número de elementos, no la capacidad. Se puede usarcapacity()para obtener la capacidad.

Ejemplo

Mediante una serie de ejemplos, dominaremos completamentesizeel uso de.

Ejemplo 1: Uso básico - Obtener el número de elementos

Ejemplo

#include <iostream>
#include <vector>

int main() {
    // 1. vector vacío
    std::vector<int> emptyVec;
    std::cout << "Tamaño del vector vacío: " << emptyVec.size() << std::endl;

    // 2. vector con elementos
    std::vector<int> numbers = {10, 20, 30, 40, 50};
    std::cout << "Tamaño del vector con elementos: " << numbers.size() << std::endl;

    // 3. Agregar elementos con push_back
    std::vector<std::string> names;
    names.push_back("Alice");
    names.push_back("Bob");
    names.push_back("Charlie");
    std::cout << "Tamaño después de agregar 3 elementos: " << names.size() << std::endl;

    return 0;
}

Resultado esperado:

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

Análisis del código:

  1. El vector vacíosize()devuelve 0.
  2. Un vector con 5 elementos devuelve 5.
  3. Cada vez quepush_backse agrega un elemento,size()aumenta en 1.

Ejemplo 2: Usar size() en un bucle

size()Se usa más comúnmente para controlar la iteración en bucles.

Ejemplo

#include <iostream>
#include <vector>

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

    // Usar size() para controlar el bucle
    std::cout << "Recorriendo todos los elementos: ";
    for(size_t i = 0; i < numbers.size(); ++i) {
        std::cout << numbers[i] << " ";
    }
    std::cout << std::endl;

    // Usar size() para obtener el límite del recorrido inverso
    std::cout << "Recorrido inverso: ";
    for(size_t i = numbers.size(); i > 0; --i) {
        std::cout << numbers[i - 1] << " ";
    }
    std::cout << std::endl;

    return 0;
}

Resultado esperado:

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

Análisis del código:

  • numbers.size()devuelve 5, la condición del buclei < numbers.size()asegura que no se excedan los límites.
  • Al recorrer en reversa, desdesize()se decrementa hasta 1, y luego se accede a[i-1]。

Ejemplo 3: Usar size() para evaluar condiciones

size()Puede usarse para diversas evaluaciones de condición.

Ejemplo

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

void processVector(const std::vector<int>& v) {
    if(v.size() == 0) {
        std::cout << "El contenedor está vacío, no hay nada que procesar" << std::endl;
        return;
    }

    if(v.size() == 1) {
        std::cout << "El contenedor tiene solo un elemento: " << v[0] << std::endl;
        return;
    }

    std::cout << "El contenedor tiene " << v.size() << " elementos" << std::endl;

    // Comprobar si es lo suficientemente grande
    if(v.size() >= 10) {
        std::cout << "Este es un contenedor grande" << std::endl;
    }
}

int main() {
    std::vector<int> empty;
    std::vector<int> single = {42};
    std::vector<int> normal = {1, 2, 3, 4, 5};
    std::vector<int> large(15, 1);

    processVector(empty);
    processVector(single);
    processVector(normal);
    processVector(large);

    return 0;
}

Resultado esperado:

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

Análisis del código:

  • size() == 0Puede usarse para comprobar si el contenedor está vacío.
  • size() == 1Puede usarse para comprobar si hay solo un elemento.
  • size() >= 10Puede usarse para comprobar si el contenedor es lo suficientemente grande.

Ejemplo 4: Diferencia entre size() y capacity()

size()devuelve el número de elementos,capacity()devuelve el espacio de almacenamiento asignado.

Ejemplo

#include <iostream>
#include <vector>

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

    std::cout << "Estado inicial:" << std::endl;
    std::cout << "  size: " << numbers.size() << std::endl;
    std::cout << "  capacity: " << numbers.capacity() << std::endl;

    // Agregar elementos
    for(int i = 0; i < 5; ++i) {
        numbers.push_back(i + 1);
    }

    std::cout << "\nDespués de agregar 5 elementos: << std::endl;
    std::cout << "  size: " << numbers.size() << std::endl;
    std::cout << "  capacity: " << numbers.capacity() << std::endl;

    // Usar resize para cambiar el tamaño
    numbers.resize(10);

    std::cout << "\nDespués de resize(10): << std::endl;
    std::cout << "  size: " << numbers.size() << std::endl;
    std::cout << "  capacity: " << numbers.capacity() << std::endl;

    // Usar reserve para reservar espacio
    numbers.reserve(100);

    std::cout << "\nDespués de reserve(100): << std::endl;
    std::cout << "  size: " << numbers.size() << std::endl;
    std::cout << "  capacity: " << numbers.capacity() << std::endl;

    return 0;
}

Resultado esperado:

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

Análisis del código:

  • size()es el número real de elementos.
  • capacity()es el tamaño del espacio de almacenamiento asignado para los elementos.
  • resize()Cambiasize(), también ajustacapacity()(si es necesario).
  • reserve()Solo cambiacapacity(), no cambiasize()。

Ejemplo 5: Usar size() para calcular el promedio

Usarsize()junto con un bucle para calcular valores estadísticos.

Ejemplo

#include <iostream>
#include <vector>

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

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

    // Usar size() para calcular el promedio
    double average = sum / scores.size();

    std::cout << "Calificaciones de los estudiantes: ";
    for(double s : scores) {
        std::cout << s << " ";
    }
    std::cout << std::endl;
    std::cout << "Número total de estudiantes: " << scores.size() << std::endl;
    std::cout << "Puntuación total: " << sum << std::endl;
    std::cout << "Promedio: " << average << std::endl;

    return 0;
}

Resultado esperado:

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

Análisis del código:

  • Usarsize()permite calcular el promedio fácilmente.
  • sum / scores.size()Se obtiene la puntuación promedio.

C++ 容器类 <vector>C++ clase de contenedor <vector>

Otras extensiones