2014-10-17 8 views

Antwort

7

Für STL-Container - nein. Tabelle 96 der Norm in [container.requirements.general], die Behälter Anforderungen für jeden Behälter listet X, erklärt es ziemlich klar:

enter image description here


jedoch für basic_string, size_type ist definiert als

typedef typename allocator_traits<Allocator>::size_type size_type; 

was wiederum size_t für std::allocator<..> als allocator sein.

Auch std::array verwendet size_t als size_type, nach [array.overview]/3.

0

size_type ist nicht garantiert size_t.

Aber die default allocatorsize_type ist, so ist die Standardeinstellung size_t.

Vom Standard 20.6.9

template <class T> class allocator { 
public: 
typedef size_t size_type; 
typedef ptrdiff_t difference_type; 
.... 

Der size_type des Behälters aus dem allocator abgeleitet:

typedef typename allocator_traits<Allocator>::size_type size_type; 
+3

Dies gilt allerdings nur für 'basic_string'. Für die Container der Klausel 23 wird nicht garantiert, dass sie den "size_type" des Zuordners verwenden. –