cpp / expert
Snippet
Bounds-Checked Span-Implementierung für Rohpuffer
Dieses Snippet zeigt eine Experten-Implementierung eines nicht-besitzenden Array-Views (ähnlich zu std::span). Es bietet eine sichere Schnittstelle für Rohpuffer, indem es Pointer und Größe kapselt und sowohl geprüfte als auch ungeprüfte Zugriffsmuster zur Performance-Optimierung anbietet.
snippet.cpp
cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdexcept>#include <cstddef>template <typename T>class View {T* ptr;size_t sz;public:constexpr View(T* data, size_t count) : ptr(data), sz(count) {}constexpr T& at(size_t index) const {if (index >= sz) throw std::out_of_range("View access out of bounds");return ptr[index];}constexpr T& operator[](size_t index) const noexcept {return ptr[index]; // Fast access, no check}size_t size() const noexcept { return sz; }};
Erklärung
1
if (index >= sz) throw std::out_of_range(...);
Implementiert eine Laufzeit-Grenzwertprüfung, um die Speichersicherheit beim Pufferzugriff zu gewährleisten.
2
T& operator[](size_t index) const noexcept
Bietet einen hochperformanten, ungeprüften Zugriffsoperator für den Einsatz in kritischen Code-Pfaden, in denen die Sicherheit extern garantiert wird.