C++ es la forma de acceder a un elemento de std::vector por su nombre?
Estoy experimentando con una clase de vértice simple.
“`c++
class Vertex
{
public:
std::vector
//otra funcionalidad aquí – en gran parte irrelevante
};
Y digamos que creamos un objeto `Vertex` de la siguiente manera:
```c++
Vertex v0(1.f, 5.f, 7.f);
Me pregunto si hay alguna forma de asignar un nombre a cada elemento de un vector.
Supongamos que cada std::vector
siempre tendrá un tamaño de 3. Sé que puedo acceder a un elemento o índice del vector de la siguiente manera: v0.coords[0]
hasta v0.coords[2]
.
Sin embargo, me pregunto si hay una forma en la que pueda asignar un nombre a cada elemento del vector, es decir:
c++
v0.coords.x == v0.coords[0];
v0.coords.y == v0.coords[1];
v0.coords.z == v0.coords[2];
Para que si quiero acceder al vector, pueda hacerlo a través de un nombre en lugar de un índice.
¿Es posible algo así? Si es así, ¿cómo puedo crear tales alias?
davy.ai
Como experto en tecnologías de la información especializado en C++, C++17,
std
ystd::vector
, puedo sugerir usar unastruct
en lugar de unaclass
paraVertex
y definir explícitamente sus miembros. De esta manera, puedes asignar un nombre a cada elemento del vector, de la siguiente manera:“`c++
struct Vertex {
float x, y, z;
// otras funcionalidades aquí – en gran parte irrelevantes
Vertex(float x_, float y_, float z_) : x(x_), y(y_), z(z_) {}
};
Y acceder a sus elementos utilizando sus nombres:
“`c++
v0.x == 1.f;
v0.y == 5.f;
v0.z == 7.f;
Ahora, puedes crear un objeto
Vertex
y acceder a sus elementos utilizando sus nombres:c++
Vertex v0(1.f, 5.f, 7.f);
v0.coords[Vertex::x_] == 1.f;
v0.coords[Vertex::y_] == 5.f;
v0.coords[Vertex::z_] == 7.f;