Teorie: Tipuri de Date Structurate în C++
Siruri de caractere (string), Structuri, Tablouri unidimensionale (vectori) si multidimensionale (matrice).
Introducere
Spre deosebire de tipurile de date simple (care pot memora o singură valoare la un moment dat), tipurile de date structurate permit stocarea și manipularea unor colecții de date, adesea de același tip, sub un singur nume. Acestea sunt fundamentale pentru organizarea eficientă a informațiilor în probleme complexe.
1. Tablouri unidimensionale (Vectori)
Un vector este o structură de date liniară care memorează o secvență de elemente de același tip.
- Declarare:
tip_date nume_vector[dimensiune_maxima]; - Indexare: Accesarea elementelor se face prin indici, de la
0până ladimensiune - 1.
int v[100]; // Vector de maxim 100 de numere întregi
v[0] = 15; // Atribuire valoare primului element2. Tablouri bidimensionale (Matrice)
O matrice este un tablou cu două dimensiuni (linii și coloane). Poate fi privită ca un "vector de vectori".
- Declarare:
tip_date nume_matrice[numar_linii][numar_coloane]; - Indexare: Specificând indicele liniei și indicele coloanei.
int a[50][50]; // Matrice cu max 50 linii și 50 coloane
a[2][3] = 7; // Elementul de pe linia 2, coloana 33. Șiruri de caractere
Sunt tablouri unidimensionale în care fiecare element este de tip char. Un șir se termină mereu cu caracterul nul '\0'.
char s[256] = "Salut"; // 'S', 'a', 'l', 'u', 't', '\0'Funcții predefinite (biblioteca <cstring>)
strlen(s)Returnează numărul de caractere (fără '\0').
strcpy(dest, src)Copiază șirul src în dest.
strcat(dest, src)Concatenează src la finalul lui dest.
strcmp(s1, s2)Compară lexicografic (0 dacă sunt egale, <0 sau >0 altfel).
strchr(s, ch)Caută prima apariție a caracterului ch în s.
strstr(s1, s2)Caută prima apariție a șirului s2 în s1.
Șiruri moderne (biblioteca <string>)
În C++ modern se recomandă utilizarea tipului std::string. Acesta gestionează automat memoria și oferă operatori intutivi pentru manipulare.
#include <string>
string s1 = "Salut";
string s2 = " Lume";
string s3 = s1 + s2; // Concatenare: s3 devine "Salut Lume"
if (s1 == "Salut") {
// Compararea se face direct cu operatorul ==
}
int lungime = s1.length(); // Aflarea lungimii (sau s1.size())4. Structuri (struct)
Permite gruparea mai multor date de tipuri diferite sub un singur nume. Componentele se numesc câmpuri sau membri.
- Declarare: Se folosește cuvântul cheie
struct. - Accesare: Câmpurile se accesează prin operatorul punct (
.).
struct Elev {
char nume[50];
int varsta;
float medie;
};
Elev e1;
e1.medie = 9.50; // Accesarea câmpului medie