vectores sirven sencillos que punteros para matrices los llenar ejemplos ejemplo dev como apuntadores c++ stl

c++ - sirven - punteros y vectores en c



¿Debería un std:: vector de objetos usar punteros, referencias o nada? (2)

Utilice el tipo T Recuerde que el operator[] devuelve una referencia (const), por lo que su Apple& funciona bien allí:

T& vector<T>::operator[](size_t); const T& vector<T>::operator[](size_t) const;

Es por eso que puedes usar vec[3].make_older() para comenzar si return_type Apple::make_older(void) existe.

Sin embargo, tenga en cuenta que hay muchos métodos que invalidan las referencias, por lo que

Apple& reference = vec[3]; vec.push_back(other_apple); reference.get_eaten();

podría resultar en un comportamiento indefinido si push_back reasignó la manzana referenciada.

Supongamos que tenemos alguna clase, digamos class Apple , y quisiéramos almacenar un std::vector contenga Apple .

¿Debería el vector contener punteros, referencias u objetos simples?

std::vector<Apple*> vector; // Definitely won''t copy the Apple on lookup, // but I would prefer not to use pointers if I don''t have to std::vector<Apple&> vector; // Seems circuitous? std::vector<Apple> vector; // I don''t know if this copies the Apple on each lookup

Mi objetivo es hacerlo así cuando llame.

Apple& a = vector[4];

La Apple no será copiada.

He estado usando C ++ durante más de un año y siempre he trabajado para solucionar esto y nunca lo entendí. ¿Existe una explicación simple de por qué uno de estos tres enfoques es la mejor práctica?


Utilizar:

std::vector<Apple> vector; // I don''t know if this copies the Apple on each lookup

Si bien todos ellos lograrían su objetivo (una búsqueda nunca se copia), este es el que permite que el vector posea la Apple en ella para que las vidas sean manejadas con sensatez.