सरणी पर रेंज-आधारित फॉर-लूप गैर-मुख्य फ़ंक्शन को पास किया गया
सी में, एक रेंज-आधारित फॉर-लूप हो सकता है किसी सरणी पर पुनरावृति करने के लिए उपयोग किया जाता है। हालाँकि, जब किसी ऐरे को किसी गैर-मुख्य फ़ंक्शन में पास किया जाता है, तो यह एक पॉइंटर में बदल जाता है, जिससे इसके आकार की जानकारी खो जाती है।
इस समस्या को हल करने और रेंज-आधारित फॉर-लूप के उपयोग को सक्षम करने के लिए, ऐरे सूचक के रूप में पारित करने के बजाय संदर्भित किया जाना चाहिए। यह सरणी के आकार की जानकारी बरकरार रखता है। यहां सही दृष्टिकोण प्रदर्शित करने वाले संशोधित उदाहरण दिए गए हैं:
void foo(int (&bar)[3]);
int main() {
int bar[3] = {1,2,3};
for (int i : bar) {
cout << i << endl;
}
foo(bar);
}
void foo(int (&bar)[3]) {
for (int i : bar) {
cout << i << endl;
}
}
// Generic implementation
template <std::size_t array_size>
void foo(int (&bar)[array_size]) {
for (int i : bar) {
cout << i << endl;
}
}
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3