cpp / expert
Snippet
Kontingente Datenansichten mit std::span
std::span (C++20) bietet eine nicht-besitzende Ansicht auf eine zusammenhängende Sequenz von Objekten. Es abstrahiert den Containertyp (Array, Vektor, etc.), behält die Performance bei und bietet einen sicheren Zugriff, was es zum modernen Standard für die Übergabe von Arrays an Funktionen macht.
snippet.cpp
cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <span>#include <vector>#include <iostream>void process_buffer(std::span<const int> data) {for (const auto& val : data) {std::cout << val << " ";}}int main() {int arr[] = {1, 2, 3};std::vector<int> vec = {4, 5, 6};process_buffer(arr);process_buffer(vec);process_buffer({vec.data(), 2}); // Subspan}
Erklärung
1
void process_buffer(std::span<const int> data)
Akzeptiert jeden zusammenhängenden Speicherblock ohne Kopieren oder Template-Aufblähung.
2
process_buffer(arr);
Leitet automatisch die Größe des rohen C-Arrays ab.
3
process_buffer({vec.data(), 2});
Erstellt eine Teilansicht der ersten zwei Elemente ohne Speicherallokation.