Qu'est-ce que std::span en C++ et quand doit-on l'utiliser ?
Bonjour, collègues ! J'écris en C++ depuis environ un an, mais je rencontre constamment le problème de la transmission de tableaux et de buffers aux fonctions. Habituellement, je passe un pointeur vers le premier élément et la taille séparément, mais cela semble lourd et sujet aux erreurs. Par exemple :
```cpp
void process_data(int* arr, size_t size) {
for (size_t i = 0; i < size; ++i) {
// on fait quelque chose avec arr[i]
}
}
int main() {
int data[] = {1, 2, 3, 4, 5};
process_data(data, 5); // fonctionne, mais il est facile de se tromper sur la taille
process_data(data, 100); // undefined behavior, erreur !
}
```
Récemment, je suis tombé sur `std::span` en C++20. J'ai lu la documentation, mais je n'ai pas complètement compris en quoi c'est mieux qu'un simple pointeur + taille. Apparemment, c'est juste une "vue" sur un tableau. À quoi ça sert ? Quand faut-il l'utiliser à la place de