program story

'size_t'대 'container :: size_type'

inputbox 2020. 8. 22. 08:46
반응형

'size_t'대 'container :: size_type'


사이에 차이가인가 size_t하고 container::size_type?

내가 이해하는 size_t것은 더 일반적이며 모든 size_types에 사용할 수 있습니다 .

하지만 container::size_type특정 종류의 컨테이너에 최적화되어 있습니까?


표준 컨테이너 일반적으로 for (또는 호환 가능한 유형) size_type로 정의되는 Allocator::size_type(Allocator는 템플릿 매개 변수)에 대한 typedef로 정의합니다 . 따라서 표준 사례의 경우 동일합니다.std::allocator<T>::size_typesize_t

그러나 사용자 지정 할당자를 사용하는 경우 다른 기본 유형을 사용할 수 있습니다. 따라서 container::size_type최대 보편성을 위해 바람직합니다.


  • size_t객체의 크기에 사용되는 유형으로 정의되며 플랫폼에 따라 다릅니다 .
  • container::size_type컨테이너의 요소 수에 사용되는 유형이며 컨테이너에 따라 다릅니다 .

모든 std컨테이너는 size_t으로 사용 size_type되지만 각 독립 라이브러리 공급 업체는 해당 컨테이너에 적합한 유형을 선택합니다.

를 보면 size_typeQt 컨테이너가 버전에 따라 다르다는 것을 알 수 있습니다. Qt3에서는 였고 unsigned intQt4에서는 int.


들면 std::[w]string, std::[w]string::size_type동일한에 std::allocator<T>::size_type상기와 동일하다 std::size_t. 다른 컨테이너의 경우 일부 구현 정의 부호없는 정수 유형입니다.

때로는 정확한 유형을 갖는 것이 유용합니다. 예를 들어 유형이 (like, to UINT_MAX)로 둘러싸 이는 위치를 알고 있으므로이를 사용할 수 있습니다. 또는 실제로 함수 / 클래스 템플릿에 두 개의 동일한 유형을 전달해야하는 템플릿의 경우.

size_t어쨌든 간결하거나 반복자를 사용 하는 경우가 종종 있습니다. 일반 코드에서는 일반적으로 템플릿이 사용되는 컨테이너 인스턴스와 해당 컨테이너의 크기를 모르기 Container::size_type때문에 컨테이너 크기를 저장해야하는 경우 typedef 를 사용해야합니다 .

참고 URL : https://stackoverflow.com/questions/918567/size-t-vs-containersize-type

반응형