मेरे पास अभी एक त्वरित प्रश्न है। मैं पॉइंटर को वांछित संख्या में प्रगति जोड़ने पर std::next
का उपयोग करने के लाभों का आकलन नहीं कर सकता। एक साधारण उदाहरण:पॉइंटर को पूर्णांक जोड़ने के बजाय std :: का उपयोग क्यों करें?
int main()
{
int arr [] = {1, 2, 3, 4, 5};
cout << *(arr + 2) << ", "; //example 1
cout << *std::next(arr, 2) << endl; //example 2
return 0;
}
आउटपुट: 3, 3
तार्किक रूप से, उदाहरण 1 तेज, के बाद से कोई समारोह इसके अलावा, कहा जाता है आदि, उदाहरण है, जिसमें मैं इस कोड भाग गया में, अगर मैं एक जोड़ा जाना चाहिए संख्या जो सूचक को सीमाओं से बाहर होने का कारण बनती है (उदाहरण के लिए 7), कंपाइलर उदाहरण 1 में एक त्रुटि फेंक देगा, लेकिन खुशी से आगे बढ़ेगा और मुझे उदाहरण में एक मेमोरी एड्रेस देगा। इसने विरोधाभास किया कि मैंने पहले क्या सोचा था: std::next
पॉइंटर सीमा से बाहर होने पर कुछ प्रकार की चेतावनी या कुछ देगा।
किसी भी ज्ञान की सराहना की जाएगी।
यह कहने की तरह है: "हम सरणी के बजाय वेक्टर का उपयोग क्यों कर रहे हैं?"। 'Std :: अगला' सभी इटरेटर प्रकारों के साथ काम करता है, न सिर्फ कच्चे पॉइंटर्स। –