Avatar ·

Was ist std::span in C++ und wann sollte man es verwenden?

Hallo Kollegen! Ich schreibe seit etwa einem Jahr in C++, aber ich stoße ständig auf das Problem, Arrays und Buffer an Funktionen zu übergeben. Normalerweise übergebe ich einen Pointer auf das erste Element und die Größe separat, aber das sieht umständlich aus und ist fehleranfällig. Zum Beispiel:\n\n```cpp\nvoid process_data(int* arr, size_t size) {\n for (size_t i = 0; i < size; ++i) {\n // etwas mit arr[i] machen\n }\n}\n\nint main() {\n int data[] = {1, 2, 3, 4, 5};\n process_data(data, 5); // funktioniert, aber man kann leicht einen Fehler mit der Größe machen\n process_data(data, 100); // undefined behavior, Fehler!\n}\n```\n\nVor kurzem bin ich auf `std::span` in C++20 gestoßen. Ich habe die Dokumentation gelesen, aber ich habe nicht ganz verstanden, warum es besser ist als ein normaler Pointer + Größe. Anscheinend ist es nur ein "view" auf ein Array. Wozu braucht man es? Wann sollte man es anstelle von Pe