मुझे पता है कि सूचक अंकगणित अशक्त बिंदुओं के लिए अस्वीकृत है। लेकिन कल्पना कीजिए कि मेरे पास ऐसा कुछ है:
class MyArray {
int *arrayBegin; // pointer to the first array item, NULL for an empty array
unsigned arraySize; // size of the array, zero for an empty array
public:
int *begin() const { return arrayBegin; }
int *end() const { return arrayBegin + arraySize; } // possible? (arrayBegin may be null)
क्या उपरोक्त end()
कार्यान्वयन संभव है (अनुमति) ? या क्या यह आवश्यक है:
int *end() const { return (arraySize == 0) ? nullptr : (arrayBegin + arraySize); }
nullptr के साथ सूचक अंकगणित से बचने के लिए क्योंकि arrayBegin
रिक्त सरणी के लिए अशक्त है ( arraySize
इस मामले में शून्य होने के बावजूद )?
मुझे पता है कि इसके int *end;
बजाय स्टोर करना संभव है unsigned size;
और आकार की गणना की जानी चाहिए end-begin
- लेकिन फिर एक ही मुद्दा आता है: क्या इसे गणना करने की अनुमति है nullptr - nullptr
?
मैं विशेष रूप से मानक संदर्भों की सराहना करूंगा।