Conceptos básicos en la biblioteca estándar de C++

  • plantilla

Las llamadas plantillas son funciones o categorías escritas para "uno o más tipos no especificados". Al usar plantillas, los tipos se pueden pasar como parámetros de forma explícita o implícita.

Por ejemplo, lo siguiente devuelve el mayor de dos números:

template<class T>
inline const T& max(const T& a,const T& b)
{
	return a < b ? : b : a;
}

La primera línea define T como un tipo de datos arbitrario, especificado por la persona que llama cuando se llama a la función. Este tipo está guiado por la clase, pero el tipo en sí no tiene que ser una clase; se puede aplicar cualquier tipo de datos a esta plantilla siempre que proporcione las operaciones utilizadas en la definición de la plantilla.

  • Espacios de nombres¶

 Los espacios de nombres agrupan diferentes identificadores en un ámbito con nombre. Si define todos los identificadores en el espacio de nombres, el nombre del espacio de nombres en sí se convierte en el único identificador que puede entrar en conflicto con otros símbolos globales. Debe agregar el nombre del espacio de nombres antes del identificador para hacer referencia a los símbolos en el espacio de nombres. El nombre del espacio de nombres y el identificador están separados por ::.

namespace AA {
	class File;
	void myGlobalFunc;
	...
}
...
//using a namespace identifier
AA::File obj;
AA::myGlobalFunc();
  •  La definición de main()

 Según la especificación estándar de C++, solo dos main() son correctos y portátiles:

int main()
{
	...
}

int main(int argc, char* argv[])
{
	...
}

argv es un parámetro de línea de comando, que también se puede definir como char**. El tipo de retorno de la función debe establecerse como int.

  • estándar de espacio de nombres

Los conflictos de nombres a menudo ocurren cuando usa diferentes módulos y bibliotecas, porque diferentes módulos y bibliotecas pueden usar el mismo identificador para diferentes objetos. El llamado espacio de nombres se refiere a un cierto alcance visible del identificador.

De hecho, todos los identificadores de la biblioteca estándar de C++ se definen en un espacio de nombres llamado std.

Para cualquier identificador en la biblioteca estándar de C++, hay tres opciones:

① Especificar directamente el identificador

std::cout << std::hex << 3.4 << std::endl;

 ②Uso de la declaración

using std::cout;
using std::endl;

cout << std::hex << 3.4 << endl;

 ③ Utilice la directiva using. Todos los identificadores definidos en std pueden ser válidos

using namespace std;

cout << hex << 3.4 << endl;
  •  Componentes STL

①Contenedores Los contenedores se utilizan para administrar una colección de ciertos tipos de objetos. En respuesta a diferentes necesidades en el programa, STL ha preparado diferentes modelos de contenedores. comunes son

        array;vector;lista;forward_list;queue;deque;stack;

        conjunto/multiconjunto;mapa/multimapa;conjunto_desordenado/mapa_desordenado;

②Iteradores Los iteradores se utilizan para realizar acciones transversales en los elementos de un grupo de objetos. El principal beneficio de los iteradores es proporcionar a todos los contenedores un pequeño conjunto de interfaces comunes mediante las cuales una operación puede pasar al siguiente elemento del clúster. Se puede pensar en un iterador como una especie de puntero inteligente.

Algoritmos Algoritmos , utilizados para procesar los elementos en el clúster.

Asignador , responsable de la configuración y gestión del espacio Desde la perspectiva de la implementación, el asignador es una plantilla de clase que realiza la configuración dinámica del espacio, la gestión del espacio y la liberación del espacio.

Adaptador Adaptador , una cosa que se usa para modificar el contenedor, el funtor o la interfaz del iterador (al igual que el voltaje de 220 V del enchufe debe pasar a través del transformador antes de conectarlo a la computadora)

Objeto Functor Function , una clase que se comporta como una función.

El concepto básico de STL es separar datos y operaciones. Los datos son administrados por clases de contenedores, las operaciones están definidas por algoritmos personalizables y los iteradores actúan como el pegamento entre los dos, lo que permite que cualquier algoritmo interactúe con cualquier contenedor.

STL trata los datos y los algoritmos por separado.En cierto sentido, el concepto de STL es contradictorio con la idea de programación orientada a objetos (POO). Sin embargo, le permite combinar varios contenedores con varios algoritmos, con una flexibilidad muy grande dentro de un marco pequeño. 

Supongo que te gusta

Origin blog.csdn.net/yangSHU21/article/details/131534185
Recomendado
Clasificación