STL en c ++: tot el que heu de saber

Aquest article us proporcionarà un coneixement detallat i exhaustiu de STL en C ++ i us donarà una idea sobre els diferents contenidors.

La biblioteca de plantilles estàndard (STL) és un conjunt de classes de plantilles C ++ per proporcionar funcions i estructures de dades de programació comuns, com ara llistes, piles, matrius, etc.



Continuem amb aquest article sobre STL en C ++



què és un mètode virtual

Plantilles C ++

C ++ ens proporciona una característica de plantilles que permet que funcions i classes funcionin amb tipus genèrics. Això permet la reutilització d’una funció o classe i permet treballar en molts tipus de dades diferents sense ser reescrit per a cadascuna.

Continuem amb aquest article sobre STL en C ++



Funcions genèriques i STL

Mentre es programen moltes vegades, és necessari crear funcions que realitzin les mateixes operacions però que funcionin amb diferents tipus de dades. Per superar aquest problema, C ++ proporciona una característica per crear una única funció genèrica en lloc de moltes funcions que poden funcionar amb diferents tipus de dades mitjançant el paràmetre de plantilla. La col·lecció d’aquestes classes i funcions genèriques s’anomena Biblioteca de plantilles estàndard (STL)

Els components de STL que ara formen part de la biblioteca estàndard de C ++ es defineixen a l'espai de noms std. Per tant, hem d’utilitzar la directiva d’ús d’espais de noms per importar-los al nostre programa.

Sintaxi:



Utilitzant l'espai de noms std

STL té tres components

  • Contenidors

  • Algorismes

  • Iteradors

Aquests tres components treballen junts en sinergia per proporcionar suport a una varietat de solucions de programació. L’algorisme fa servir iteradors per realitzar operacions emmagatzemades en contenidors.

Un contenidor és un objecte que emmagatzema les dades a la memòria de manera organitzada. Els contenidors a STL s’implementen per classes de plantilles i, per tant, es poden modificar i personalitzar fàcilment per contenir diferents tipus de dades.

Un procediment que s’utilitza per processar les dades contingudes als contenidors es defineix com un algorisme. El STL inclou molts tipus diferents d’algoritmes per donar suport a tasques com ara inicialitzar, buscar, copiar, ordenar i combinar, copiar, ordenar i combinar. Els algoritmes s’implementen mitjançant funcions de plantilla.

Un iterador es pot definir com un objecte que apunta a un element d'un contenidor. Els iteradors es poden utilitzar per moure’s pel contingut dels contenidors. Els iteradors es manegen igual que els indicadors. Els podem incrementar o disminuir. Els iteradors connecten l'algorisme amb els contenidors i tenen un paper clau en la manipulació de les dades emmagatzemades als contenidors.

Container-STL-in-C++

Continuem amb aquest article sobre STL en C ++

Contenidors

STL defineix deu contenidors agrupats en tres categories.

Contenidors

Descripció

Fitxer de capçalera

Iterador

Vector

Es pot definir com una matriu dinàmica. Permet l'accés directe a qualsevol element.

Accés aleatori

Llista

És una llista lineal bidireccional. Permet la inserció i la supressió en qualsevol lloc

Bidireccional

i

És una cua de doble punt. Permet inserir i suprimir els dos extrems. Permet l'accés directe a qualsevol element.

Accés aleatori

conjunt

És un contenidor associat per emmagatzemar conjunts únics. Permet la cerca ràpida.

Bidireccional

multiset

És un contenidor associat per emmagatzemar conjunts no únics.

Bidireccional

mapa

És un contenidor associat per emmagatzemar parells clau / valor únics. Cada clau només està associada a un valor.

Bidireccional

multimapa

És un contenidor associat per emmagatzemar la clau / valor en què una clau es pot associar a més d'un valor (assignació d'un a molts). Permet una cerca basada en claus.

Bidireccional

apilar

Una pila estàndard segueix l’últim en sortir (LIFO)

Cap iterador

cua

Segueix una cua estàndard de primer a primer que surt (FIFO)

inserir php a la taula $

Cap iterador

prioritat-cua

El primer element que surt és sempre l’element de màxima prioritat

Cap iterador

Contenidors de seqüències

Els contenidors de seqüències emmagatzemen els elements en un ordre lineal. Tots els elements estan relacionats entre ells per la seva posició al llarg de la línia. Permeten la inserció de l'element i tots ells admeten diverses operacions sobre ells.

El STL proporciona tres tipus d'elements de seqüència:

  • Vector
  • Llista
  • i

Contenidors associatius:

Estan dissenyats de manera que permetin l'accés directe als elements mitjançant claus. No són seqüencials. Hi ha quatre tipus de

contenidors associatius:

  1. Conjunt
  2. Multiset
  3. Mapa
  4. Multimapa

Tots els contenidors anteriors emmagatzemen les dades en una estructura anomenada arbre que facilita la rapidesa

cerca, supressió i inserció a diferència de la seqüencial. El conjunt de contenidors o el conjunt múltiple poden emmagatzemar diversos elements i proporcionar operacions per manipular-los utilitzant els valors com a tecles.

I map o Multimap s’utilitzen per emmagatzemar articles en parells, un anomenat clau i un altre

anomenat valor.

Contenidors derivats:

El STL proporciona tres contenidors derivats, a saber, pila, cua i prioritat_cua. Aquests també es coneixen com a adaptadors de contenidors.

Hi ha tres tipus de contenidors derivats:

1. Pila

2. Cua

3. Prioritat_qua

Les piles, la cua i la cua de prioritat es poden crear fàcilment a partir de diferents contenidors de seqüències. Els contenidors derivats no admeten iteradors i, per tant, no els podem utilitzar per a la manipulació de dades. Tot i això, admeten la funció de dos membres pop () i push () per implementar operacions de supressió i inserció.

Continuem amb aquest article sobre STL en C ++

Algorismes

Els algoritmes són funcions que es poden utilitzar generalment en diversos contenidors per processar el seu contingut. Tot i que cada contenidor proporciona funcions per a les seves operacions bàsiques, STL proporciona més de seixanta algoritmes estàndard per donar suport a operacions més esteses o complexes. Els algoritmes estàndard també ens permeten treballar amb dos tipus diferents de contenidors alhora.

Els algoritmes STL reforcen la filosofia de la reutilització. En utilitzar aquests algoritmes, els programadors poden estalviar molt de temps i esforç. Per tenir accés als algoritmes STL, hem d’incloure al nostre programa.

L'algorisme STL, basat en la naturalesa de les operacions que realitzen, es pot classificar en:

  • Algorismes no mutants

  • Algorismes de mutació

  • Algorismes d’ordenació

  • Establir algoritmes

  • Algorisme relacional

Continuem amb aquest article sobre STL en C ++

Iteradors:

Els iteradors actuen com a indicadors i s’utilitzen per accedir als elements del contenidor. Utilitzem iteradors per desplaçar-nos pel contingut dels contenidors. Els iteradors es manegen igual que els indicadors. Els podem incrementar o disminuir segons els nostres requisits. Els iteradors connecten els contenidors amb algoritmes i tenen un paper vital en la manipulació de les dades emmagatzemades als contenidors. Sovint s’utilitzen per passar d’un element a un altre, aquest procés s’anomena iteració pel contenidor.

Hi ha cinc tipus d'iteradors:

1. Entrada

2. Sortida

3. Endavant

4. Bidireccional

5. Aleatori

Iterador

Mètode d'accés

Direcció del moviment

Capacitat d'E / S

Observació

Entrada

Lineal

Només endavant

Llegeix només

No es pot desar

Sortida

Lineal

Només endavant

Només escriure

No es pot desar

Endavant

Lineal

Només endavant

Llegir escriure

Es pot desar

Bidireccional

Lineal

Endavant i enrere

Llegir escriure

Es pot desar

Aleatori

Aleatori

Endavant i enrere

Llegir escriure

Es pot desar

com imprimir el registre de lliurament de git

S'han d'utilitzar diferents tipus d'iteradors amb els diferents tipus de contenidors, de manera que només

seqüències i contenidors associatius poden viatjar a través dels iteradors. Cada tipus d'iteradors s'utilitza per realitzar determinades funcions. Els iteradors d’entrada i sortida admeten les funcions mínimes. Només es poden utilitzar per passar a través d'un contenidor. Els iteradors directes admeten totes les operacions dels iteradors d’entrada i sortida i també mantenen la seva posició al contenidor. Un iterador bidireccional, tot i donar suport a totes les operacions d'iteradors cap endavant, proporciona la possibilitat de moure's cap enrere al contenidor.

Així hem arribat al final d’aquest article sobre ‘STL en C ++’. Si voleu obtenir més informació, consulteu el per Edureka, una empresa d’aprenentatge en línia de confiança. El curs de formació i certificació Java J2EE i SOA d’Edureka està dissenyat per formar-vos tant per a conceptes bàsics com avançats de Java, juntament amb diversos marcs Java com Hibernate & Spring

Tens alguna pregunta? Si us plau, mencioneu-lo a la secció de comentaris d’aquest bloc i us respondrem el més aviat possible.