Sco*_*tis 5 c++ arrays size vector max
对于作业,我应该重新创建C++ Vector库,目前我仍然坚持如何返回最大大小.
根据这个网站:http: //www.cplusplus.com/reference/stl/vector/ size_type max_size()const; 返回最大尺寸
返回向量容器可容纳的最大元素数.
目前我的函数是基于数组的操作而矢量库不是基于模板类,矢量库使用int和size_t数据类型.(我不确定这是否与此有关)
相关代码:
class vector{
private:
int *vect;
size_t length;
size_t cap;
public:
//=====================Constructor================
vector(){
length = 0;
cap = 20;
vect = new int[20];
}
//INCOMPLETE
size_t max_size() const{
//return???!?!?!?!?
}
Run Code Online (Sandbox Code Playgroud)
}
由于库/代码或系统的限制,这与最大大小有关.对于一个非常人为的例子,假设您的实现使用无符号短(2字节)数来存储向量中的记录数.然后你的max_size函数将返回65,536,因为你的库因为实现不佳而有这个限制.
作为另一个更现实的例子,如果您知道向量的最大大小(以字节为单位)限制为4G,并且容器中包含的大小为每个实例128个字节,那么max_size将返回33,554,431的调整.(0xFFFFFFFF/128)
下面是我在C++实现中的工作方式.基本上,找到size_type的最大值(无符号为-1),然后将其除以存储在向量中的对象的大小.(value_type)在32位硬件上,size_type(-1)将产生4,294,967,295,如果您存储了一个unsigned int值sizeof(value_type),则产生4个字节,max_size()返回值为1,073,741,823.
/** Returns the size() of the largest possible %vector. */
size_type max_size() const
{
return size_type(-1) / sizeof(value_type);
}
Run Code Online (Sandbox Code Playgroud)