Praktische Beispiele
Temperaturverfolgungssystem
#include <iostream>
#include <iomanip>
class TemperatureLogger {
private:
static const int DAYS = 7;
double temperatures[DAYS];
public:
void recordTemperatures() {
double dailyTemps[DAYS] = {22.5, 23.1, 21.8, 24.0, 22.7, 23.3, 21.9};
std::copy(std::begin(dailyTemps), std::end(dailyTemps), temperatures);
}
void analyzeTemperatures() {
double total = 0;
for (int i = 0; i < DAYS; ++i) {
total += temperatures[i];
}
double average = total / DAYS;
std::cout << "Wöchentlicher Temperaturanalyse:" << std::endl;
std::cout << "Durchschnittliche Temperatur: " << std::fixed << std::setprecision(2)
<< average << "°C" << std::endl;
}
};
int main() {
TemperatureLogger logger;
logger.recordTemperatures();
logger.analyzeTemperatures();
return 0;
}
Verwaltung von Schülernoten
#include <iostream>
#include <algorithm>
class GradeTracker {
private:
static const int CLASS_SIZE = 5;
int grades[CLASS_SIZE];
public:
void inputGrades() {
int studentGrades[CLASS_SIZE] = {85, 92, 78, 95, 88};
std::copy(std::begin(studentGrades), std::end(studentGrades), grades);
}
void calculateStatistics() {
int highest = *std::max_element(grades, grades + CLASS_SIZE);
int lowest = *std::min_element(grades, grades + CLASS_SIZE);
std::cout << "Notenstatistik:" << std::endl;
std::cout << "Höchste Note: " << highest << std::endl;
std::cout << "Niedrigste Note: " << lowest << std::endl;
}
};
int main() {
GradeTracker tracker;
tracker.inputGrades();
tracker.calculateStatistics();
return 0;
}
Speichervisualisierung
graph TD
A[Array fester Länge] --> B[Kontinuierlicher Speicherblock]
B --> C[Speicherung der Elemente]
C --> D[Direkter Indexzugriff]
D --> E[Effiziente Verarbeitung]
Leistungsvergleich
Array-Typ |
Zugriffszeit |
Speicheraufwand |
Flexibilität |
Feste Länge |
O(1) |
Gering |
Eingeschränkt |
Dynamisches Array |
O(1) |
Höher |
Flexibel |
std::array |
O(1) |
Kontrolliert |
Sicherer |
Beispiel für Fehlerbehandlung
#include <stdexcept>
class SafeArray {
private:
static const int MAX_SIZE = 10;
int data[MAX_SIZE];
public:
int& at(int index) {
if (index < 0 || index >= MAX_SIZE) {
throw std::out_of_range("Index außerhalb der Grenzen");
}
return data[index];
}
};
Best Practices mit LabEx
- Initialisieren Sie Arrays immer.
- Verwenden Sie Grenzenprüfungen.
- Bevorzugen Sie
std::array
für modernes C++.
- Verstehen Sie die Speicherimplikationen.
Kompilierung und Ausführung
Um diese Beispiele unter Ubuntu 22.04 zu kompilieren:
g++ -std=c++11 example.cpp -o example
./example