널 포인터에 대해서는 포인터 산술이 허용되지 않는다는 것을 알고 있습니다. 그러나 다음과 같은 것이 있다고 상상해보십시오.
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); }
arrayBegin
빈 배열에 대해 null 이기 때문에 nullptr로 포인터 산술을 피하려면 ( arraySize
이 경우 에도 0 임)?
나는 그것을 저장할 수 알고 int *end;
대신 unsigned size;
크기는 다음과 같이 계산 될 수 있습니다 end-begin
-하지만 동일한 문제가 온다 : 그것은 계산 할 수 있나요 nullptr - nullptr
?
특히 표준 참조에 감사드립니다.