cpp / intermediate
Snippet
Ansichten auf zusammenhängenden Speicher mit Spans
std::span (C++20) ist eine besitzlose Ansicht auf eine zusammenhängende Sequenz von Objekten. Es ermöglicht Funktionen, Arrays, Vektoren oder Raw-Pointer gleichermaßen zu akzeptieren, ohne Daten zu kopieren oder Größeninformationen zu verlieren, was Performance und Flexibilität erheblich verbessert.
snippet.cpp
cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>#include <span>#include <vector>void print_data(std::span<int> view) {for (int x : view) {std::cout << x << " ";}std::cout << std::endl;}int main() {int raw_arr[] = {1, 2, 3};std::vector<int> vec = {4, 5, 6};print_data(raw_arr); // Works with raw arraysprint_data(vec); // Works with vectorsreturn 0;}
Erklärung
1
void print_data(std::span<int> view)
Akzeptiert eine 'View', die auf jede zusammenhängende Speicherquelle zeigen kann.