Avatar ·

C++ में std::span क्या है और इसका उपयोग कब करना चाहिए?

नमस्ते साथियों! मैं लगभग एक साल से C++ में लिख रहा हूँ, लेकिन मुझे लगातार arrays और buffers को functions में पास करने की समस्या का सामना करना पड़ता है। आमतौर पर मैं पहले element का pointer और size अलग-अलग pass करता हूँ, लेकिन यह बोझिल और error-prone लगता है। उदाहरण के लिए:\n\n```cpp\nvoid process_data(int* arr, size_t size) {\n for (size_t i = 0; i < size; ++i) {\n // arr[i] के साथ कुछ करें\n }\n}\n\nint main() {\n int data[] = {1, 2, 3, 4, 5};\n process_data(data, 5); // काम करता है, लेकिन size में गलती करना आसान है\n process_data(data, 100); // undefined behavior, error!\n}\n```\n\nहाल ही में मुझे C++20 में `std::span` मिला। मैंने documentation पढ़ी, लेकिन मुझे पूरी तरह से समझ नहीं आया कि यह सामान्य pointer + size से बेहतर कैसे है। ऐसा लगता है कि यह array पर एक "view" है। इसकी आवश्यकता क्यों है? इसका उपयोग कब करना चाहिए बजाय पे