Cita: Hago una pequeña acotacion al tema... Hoy en dia la memoria no es un gran problema en la mayoria de las aplicaciones.
De acuerdo, sobre todo con tipos simples.
Cita: C++ es muy ineficiente para el manejo de todo lo que tenga que ver con arrays o vectores. El objeto vector es una mera basura que falla en cuanto más falta te hace, además de que consume muchos recursos y no tiene prevención de errores.
Creo que más bien depende del contexto y del tipo de datos, si estás manejando objetos definidos por ti, suele ser muy costoso, ya que se crean múltiples objetos temporales al estarse copiando elementos de manera interna(múltiples llamadas al constructor copia, aquí hay que tomar en cuenta que esto de las copias innecesarias cambia significativamente con las rvalue references en C++11). El rendimiento es muy superior si creas un contenedor de punteros por ejemplo, obviamente aquí tienes que encargarte de administrar la memoria a la que refieren tus punteros, nada nuevo a como se haría en C, que aún así puede seguir siendo la mejor opción, pero insisto, dependerá del contexto y de saber aprovechar las ventajas y evitar las desventajas en cada situación y con cualquier contenedor (no sólo del vector), ya que puedes obtener un rendimiento muy similar usando C o C++.