T
유형의 경우 std::list<T>
유형이 동일하고 일정한 크기를 유지한다고 가정 할 수 있습니까? 그냥 명확하게하기 위해, 나는 '메인'타입 자체의 크기를 의미하며, 그것에 의해 할당 된 메모리는 아닙니다.sizeof (std :: list <T>)는 다양한 유형의 T?
T
자체의 크기는 할당자를 사용하여 할당 된 목록 노드의 크기에만 영향을 주어야한다고 가정하는 것이 논리적 인 것처럼 보입니다.
그러나 내가 생각할 수있는 sizeof(std::list<T>)
의 variancy가 발생할 수 있습니다 두 가지가 있습니다 :
- '최적화'를
std::list<T>
자체에T
인스턴스의 일부를 바꾸어std::list
유형에 시도하는 표준 C++ 라이브러리 . 그건 나에게 나쁜 생각 인 것 같고 표준에 의해 요구되는 '일정한 시간'요구 사항을 깨뜨릴 수 있습니다. - 전문화가 다른 크기 인 일부 유형의 경우 라이브러리 특수화가
std::list<T>
인 표준 C++입니다.
(1) 또는 (2)에 대한 용도는 생각할 수 없지만 잘못되었을 수 있습니다.
내가 달성하려는 생각은 내부에 std::list<T>
을 사용하는 템플릿 클래스에 고정 크기 슬라이스 할당자를 사용하는 것입니다. 참고로
:이은 T
의 다른 유형의 차이에 대해, 그리고 다른 할당 자에 대한 하지. 모든 인스턴스화를 명시 적으로 제어 할 것이고 모두는 std::allocator
을 사용할 것입니다.
흥미 롭습니다. +1. 나는 꽤 확신한다. 표준은 같은 크기를 보장하지 않지만 여전히 +1과 그냥 주석이다. –
나는이 생각을'list'보다는'vector'에 대해 생각했지만'T *'를 포함 할 수도있다. , 그리고 모든 포인터가 같은 크기가 아닙니다 ... 좋아요. 어떻게 멤버 함수의 컨테이너를 만들 었는지 모르겠지만 ... – BoBTFish
@BoBTFish - 모든 포인터는 같은 크기입니다. –