En C++, inicializar todos los valores de una estructura con el mismo dato puede hacerse de forma eficiente utilizando inicializadores o funciones. Este proceso simplifica la asignación de valores predeterminados a todos los miembros de una estructura.
Si la estructura tiene un constructor, se pueden asignar valores a los miembros de forma directa:
struct MiEstructura {
int a, b, c;
MiEstructura(int valor) : a(valor), b(valor), c(valor) {}
};
int main() {
MiEstructura miStruct(5); // Todos los valores serán 5
return 0;
}
Desde C++11, las listas de inicialización permiten asignar valores uniformes:
struct MiEstructura {
int a, b, c;
};
int main() {
MiEstructura miStruct = {5, 5, 5}; // Asigna 5 a todos los campos
return 0;
}
std::fill
en arreglos dentro de estructuras
Si la estructura contiene un array, se puede emplear std::fill
para inicializar todos los elementos:
#include <algorithm> // Para std::fill
struct MiEstructura {
int arr[3];
};
int main() {
MiEstructura miStruct;
std::fill(std::begin(miStruct.arr), std::end(miStruct.arr), 5); // Todos los elementos serán 5
return 0;
}
Para estructuras grandes, macros o funciones pueden ayudar:
#define INIT_STRUCT(s, v) \
s.a = v; \
s.b = v; \
s.c = v;
struct MiEstructura {
int a, b, c;
};
int main() {
MiEstructura miStruct;
INIT_STRUCT(miStruct, 5); // Inicializa todos los valores a 5
return 0;
}
struct Persona {
std::string nombre;
int edad;
};
int main() {
Persona p = {"John Doe", 30}; // Inicialización explícita
return 0;
}
const int VALOR_DEFECTO = 5;
struct MiEstructura {
int x, y, z;
};
int main() {
MiEstructura m = {VALOR_DEFECTO, VALOR_DEFECTO, VALOR_DEFECTO};
return 0;
}
Para más detalles, consulta la documentación oficial de C++.
Jorge García
Fullstack developer