C++ <vector> función size
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: devuelve
size_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 <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:
- El vector vacío
size()devuelve 0. - Un vector con 5 elementos devuelve 5.
- Cada vez que
push_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 <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, desde
size()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 <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 <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 <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:
- Usar
size()permite calcular el promedio fácilmente. sum / scores.size()Se obtiene la puntuación promedio.
Otras extensiones