Saya tahu bahwa pointer aritmatika tidak diizinkan untuk null pointer. Tetapi bayangkan saya memiliki sesuatu seperti ini:
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)
Apakah mungkin (diizinkan) untuk memiliki end()
implementasi di atas ? Atau apakah perlu memiliki:
int *end() const { return (arraySize == 0) ? nullptr : (arrayBegin + arraySize); }
untuk menghindari aritmatika pointer dengan nullptr karena arrayBegin
null untuk array kosong (meskipun arraySize
juga nol dalam kasus ini)?
Saya tahu mungkin untuk menyimpan int *end;
daripada unsigned size;
membiarkan ukuran dihitung end-begin
- tetapi kemudian muncul masalah yang sama: Apakah diizinkan untuk menghitung nullptr - nullptr
?
Saya akan sangat menghargai referensi standar.
sumber