El tema es sencillo (o lo parece). Cuando utilizamos un contenedor de la STL (vector por ejemplo) ¿qué pasa con el contenido cuando se destruye el contenedor?

Sirva este código para ilustrar la cuestión:

#include <vector>
#include <string>

using namespace std;

int main() {

  vector<string> v1;
  v1.push_back("hello");
  v1.push_back("world");

  vector<string>* v2 = new vector<string>(v1.begin(), v1.end());

  // many function calls...

  delete v2;

  // many function calls...

  return 0;
}

Al ejecutarse el delete v2, ¿se destruyen las cadenas que contiene? ¿Y las de v1? ¿cómo funciona esto? ¿pasa con todos los containers? ¿se puede cambiar ese comportamiento (sea el que sea)?

El reto consiste en:

Escribir un programa lo más sencillo posible (pero sin ofuscación) que demuestre inequívocamente qué le ocurre al contenido del container, y responda (en lo posible) esas preguntas.

Abstenerse Paco Moya por el momento, por favor :-)



blog comments powered by Disqus