std::array के लिए get() फंक्शन
इस खंड में हम C++ STL में सरणी के get() फंक्शन को देखेंगे। यह फंक्शन सरणी कंटेनर के i-वें तत्व को प्राप्त करने के लिए उपयोग किया जाता है। सिंटैक्स इस प्रकार है:
सिंटैक्स
get<I>(array_name)
यह फंक्शन दो अनिवार्य पैरामीटर लेता है। पहला इंडेक्स पैरामीटर है (टेम्पलेट पैरामीटर के रूप में)। यह सरणी की i-वीं स्थिति को इंगित करने के लिए उपयोग किया जाता है। दूसरा आर्गुमेंट array_name है। यह वास्तविक सरणी है जिससे i-वां तत्व लिया जाएगा। यह फंक्शन i-वां तत्व लौटाता है।
उदाहरण
#include <iostream>
#include <array>
#include <tuple> // get() के लिए आवश्यक
using namespace std;
int main() {
array<int, 10> arr = {0, 11, 22, 33, 44, 55, 66, 77, 88, 99};
cout << "1st element: " << get<0>(arr) << endl;
cout << "6th element: " << get<5>(arr) << endl;
cout << "8th element: " << get<7>(arr) << endl;
cout << "10th element: " << get<9>(arr) << endl;
// get() का उपयोग टपल-जैसे एक्सेस के लिए भी किया जाता है
array<double, 3> point = {1.5, 2.5, 3.5};
cout << "X: " << get<0>(point) << ", Y: " << get<1>(point) << ", Z: " << get<2>(point);
return 0;
}
आउटपुट
1st element: 0 6th element: 55 8th element: 77 10th element: 99 X: 1.5, Y: 2.5, Z: 3.5
महत्वपूर्ण बिंदु
get<I>(arr)एक फ्री फंक्शन है, मेंबर फंक्शन नहीं- इंडेक्स I एक कंपाइल-टाइम कॉन्स्टेंट होना चाहिए (टेम्पलेट पैरामीटर)
<tuple>या<utility>हेडर की आवश्यकता होती हैstd::tuple,std::pair,std::arrayके लिए काम करता है- रिटर्न प्रकार: रेफरेंस (lvalue के लिए), कॉन्स्ट रेफरेंस (const lvalue के लिए), rvalue रेफरेंस (rvalue के लिए)
- बाउंड्स चेकिंग नहीं - आउट-ऑफ-बाउंड्स अपरिभाषित व्यवहार है
मेंबर फंक्शन at() के साथ तुलना
| विशेषता | get<I>(arr) | arr.at(i) |
|---|---|---|
| इंडेक्स प्रकार | कंपाइल-टाइम (टेम्पलेट) | रनटाइम |
| बाउंड्स चेकिंग | नहीं | हां (out_of_range फेंकता है) |
| प्रदर्शन | थोड़ा तेज़ | चेक के कारण थोड़ा धीमा |
| उपयोग मामला | कंपाइल-टाइम ज्ञात इंडेक्स | रनटाइम इंडेक्स |
संरचित बाइंडिंग (C++17) के साथ उपयोग
array<int, 3> arr = {10, 20, 30};
auto [x, y, z] = arr; // C++17 संरचित बाइंडिंग
cout << x << " " << y << " " << z; // 10 20 30