std:: ptrdiff_t
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Basic types | |||||||||||||||||||||
| Fixed width integer types (C++11) | |||||||||||||||||||||
| Fixed width floating-point types (C++23) | |||||||||||||||||||||
|
|||||||||||||||||||||
| Numeric limits | |||||||||||||||||||||
| C numeric limits interface | |||||||||||||||||||||
| Runtime type information | |||||||||||||||||||||
|
|||||||||||||||||||||
|
헤더 파일에 정의됨
<cstddef>
|
||
|
typedef
/*implementation-defined*/
ptrdiff_t
;
|
||
std::ptrdiff_t
는 두 포인터를 뺀 결과의 부호 있는 정수형입니다.
|
|
(C++11부터) |
목차 |
참고 사항
std::ptrdiff_t
는 음수 값이 가능한 경우
포인터 연산
및 배열 인덱싱에 사용됩니다.
int
와 같은 다른 타입을 사용하는 프로그램은 인덱스가
INT_MAX
를 초과하거나 32비트 모듈러 연산에 의존하는 경우, 예를 들어 64비트 시스템에서 실패할 수 있습니다.
C++ 컨테이너 라이브러리를 사용할 때, 반복자 간 차이에 대한 적절한 타입은 멤버 typedef
difference_type
으로, 이는 종종
std::ptrdiff_t
와 동의어입니다.
동일한 배열의 요소들(배열의 끝 바로 다음을 가리키는 포인터 포함)을 가리키는 포인터들끼리만 서로 뺄셈할 수 있습니다.
배열이 매우 커서(
PTRDIFF_MAX
개 이상의 요소이지만
SIZE_MAX
바이트 미만인 경우) 두 포인터 간의 차이가
std::ptrdiff_t
로 표현될 수 없을 정도로 크다면, 이러한 두 포인터를 뺀 결과는 정의되지 않습니다.
char 배열의 길이가
PTRDIFF_MAX
보다 짧은 경우,
std::ptrdiff_t
는
std::size_t
의 부호 있는 대응 타입으로 작동합니다: 이는 모든 타입의 배열 크기를 저장할 수 있으며 대부분의 플랫폼에서
std::intptr_t
와 동의어입니다.
std::ptrdiff_t
의 선언이 다른 표준 라이브러리 헤더에서 사용 가능한지 여부는 명시되지 않습니다. 구현체는 표준에서
std::ptrdiff_t
의 사용을 요구하는 경우에도 이 이름의 도입을 피할 수 있습니다.
가능한 구현
// C++11부터 유효함 using ptrdiff_t = decltype(static_cast<int*>(nullptr) - static_cast<int*>(nullptr)); |
예제
#include <cstddef> #include <iostream> int main() { const std::size_t N = 10; int* a = new int[N]; int* end = a + N; for (std::ptrdiff_t i = N; i > 0; --i) std::cout << (*(end - i) = i) << ' '; std::cout << '\n'; delete[] a; }
출력:
10 9 8 7 6 5 4 3 2 1
참고 항목
|
sizeof
연산자가 반환하는 부호 없는 정수형
(typedef) |
|
|
표준 레이아웃
타입의 시작부터 지정된 멤버까지의 바이트 오프셋
(함수 매크로) |
|
|
C 문서
for
ptrdiff_t
|
|