vector的构造函数中的size_type是什么意思?

时间:2015-12-11 08:09:48

标签: c++ vector type-conversion size-type

我正在使用的vector的构造函数的规范是:

vector(size_type count, const T& value, const Allocator& alloc = Allocator());

我正在尝试初始化一个向量,我对size_type不太熟悉。 cplusplus和cppreference都没有size_type的条目。一个快速的谷歌告诉我,它是某种数据类型,用于表示容器之类的尺寸,容量等(我认为)。我仍然不太确定我是否正确理解它或如何使用它。

我们想说我希望初始化int计数(10*n/3) + 1向量,其中n的类型为int。我可以将计数转换为long类型吗?我甚至做得对吗?我如何理解和使用size_type

请忽略硬件方面的考虑,例如计算机是否可以首先分配足够的内存。我稍后会担心,现在我只想集中精力理解这个概念。

3 个答案:

答案 0 :(得分:2)

AB_EXTERN const ABPropertyID kABPersonNoteProperty AB_DEPRECATED("use CNContact.note");// Note - kABStringPropertyType AB_EXTERN const ABPropertyID kABPersonCreationDateProperty AB_DEPRECATED("");// Creation Date (when first saved) AB_EXTERN const ABPropertyID kABPersonModificationDateProperty AB_DEPRECATED("");// Last saved date 内定义的man bash;它实际上是typedef的同义词,后者又是实现定义的无符号整数类型的typedef,它能够保存当前机器上可能创建的最大对象的大小。在实践中,您可以将其视为某种无符号整数,在引用索引或元素计数时始终在整个std::vector接口中使用。

On" regular"机器(你有32位整数),如果你没有达到"常规"您的代码中std::size_t用于元素计数,您可以使用std::vector来获取没有问题的索引(并且您实际上更安全地避免因无符号整数的算术/比较而产生的细微错误。)

答案 1 :(得分:0)

std::vector<T>::size_type是无符号整数类型,可以表示分配模型中最大对象的大小。这通常是std::size_t

之类的

除非你认为自己会遇到最大积分值,否则你不必担心这个问题。只需传入一个整数类型,编译器会告诉你是否做了一些令人发指的事情。

答案 2 :(得分:0)

T::size_type是一种数据类型,足以容纳机器可以处理的任何结构的大小。所以在32位机器上,这通常是32位无符号整数。

std::size_t由很多容器定义,通常只重新定义T::size_type x = T::your_operation();(但严格来说不需要)。定义它的原因是,你可以写MediaRecorder而不必考虑你正在使用哪个容器。您可以稍后切换容器,T :: size_type仍然是有效的C ++,不需要重做。