Página de Roberto Oropeza Gamarra: oropezaroberto.awardspace.com
Tutoriales
De C a C++C++ básicoEstructura de DatosSTL de C++DLLsCBuilderEjemplos
¿using namespace std?
Mapa del sitioTutorialesC++ básico¿using namespace std? arriba atras adelante
¿using namespace std?

Las librerías estándar de C y C++ (las que se #incluyen < entre símbolos menor-que y mayor-que >) definen en conjunto cientos de funciones, estructuras, tipos, etc. y corremos el riesgo de que tengan el mismo nombre de alguna de nuestras propias funciones o variables, y eso puede provocar errores difíciles de detectar y/o corregir, es el mismo problema que se tiene que resolver en proyectos grandes en que hay varios programas, y que tienen que prestarle atención quienes quieren hacer sus propias librerías, era un problema que se venía arrastrando desde C (sin mas mas); pero C++ ha resuelto el problema de raíz.

La solución establecida en C++ son los namespace (namespace = espacio de nombres), por ejemplo si queremos que una variable x y una función f estén en el namespace mate hacemos así:

namespace mate {
   int x, y;
   float f(int a) {
      // ...
   }
}

Entonces, el siguiente programador que quiera usar la variable x que está en el namespace mate debería hacer esto: mate::x = mate::f(5);

Pero se cansaría de escribir “mate::” a cada rato... entonces podría hacer esto:

using namespace mate;

x = f(5);
double y = 3.5;

Lo bueno es que su variable y no tiene nada que ver con la que esta en el namespace mate

Es exactamente lo mismo que using namespace std, los C++ han puesto todo lo estándar en el namespace std, así que puedes elegir entre using namespace std al principio de tus programas o poner std:: a cada rato.

¿Ventajas? Puedes tener una variable llamada cin, vector, max, sin, string, o cualquiera que se use en una librería estándar, sin ningún problema; esto tiene más importancia si nos damos cuenta de que para evitar nombres repetidos NO hay que memorizar los cientos de nombres usados por las librerías estándar de C++. Por eso preferimos #include <cosita> y no #include <cosita.h>, porque los que no llevan .h están en el namespace std.

Aquí están algunos nombres de las cabeceras viejas (de C o de C++ no estándar) y las nuevas (de C++ estándar, que usan namespace std)

Cabeceras nuevas
Antes (y en C) Ahora (En C++)
#include <stdlib.h> #include <cstdlib>
#include <math.h> #include <cmath>
#include <stdio.h> #include <cstdio>
#include <iostream.h> #include <iostream>

En general, si ves que has incluido un .h, proba quitandole el .h, y si no da, auméntale la letra c al principio.