mid left from c++ stl vector

c++ - left - std:: string:: substr



¿Para qué se utiliza std:: vector:: front()? (3)

Algunos de los algoritmos genéricos que también funcionan en listas lo utilizan.

Este es un ejemplo de un principio general: si proporciona accesores para todas las semánticas que admite, no solo la implementación que admite, es más fácil escribir de forma genérica y, por lo tanto, es más fácil reutilizar el código.

Lo siento si esto se ha preguntado antes, pero me pregunto cuál es el uso de std::vector::front() .

¿Hay alguna razón para usar, por ejemplo, myvector.front() lugar de myvector[0] o myvector.at(0) ?


Hacer esto proporciona algo llamado polimorfismo estático.

Digamos que he escrito un algoritmo usando una clase de cola. Tiene una función frontal () para obtener el siguiente elemento de la cola, y una función enqueue () para agregar al final de la cola. Ahora digamos que descubrí que esta clase de cola está mal escrita y muy lenta, y prefiero usar std :: vector que es mucho más rápido (sé que hay una std :: cola, esto es solo un ejemplo). Si la única forma de obtener el primer elemento de un std :: vector fuera con v [0], tendría que revisar mi código y reemplazar todas mis llamadas a front () con [0]. Pero al implementar front (), std :: vector ahora puede ser un reemplazo directo de mi clase de cola. El único código que tengo que cambiar es el tipo de contenedor en mi algoritmo.


Si el tipo de myvector cambia a otro tipo de datos que no se puede indexar, como una lista, no tendrá que cambiar el código que accede al frente del contenedor.