Avatar ·

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 on peut facilement 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 il est meilleur qu'un simple pointeur + taille. Apparemment, c'est juste une "vue" sur un tableau. À quoi sert-il ? Quand faut-il l'utiliser à la place de