C++矢量库,为赋值重新创建,最大大小函数

C++ Vector library, Recreating for Assignment, max size function

本文关键字:创建 函数 新创建 赋值 C++      更新时间:2023-10-16

对于一个赋值,我应该重新创建C++矢量库,而我目前正纠结于如何返回最大大小。

根据本网站:http://www.cplusplus.com/reference/stl/vector/size_type max_size()常量;返回最大尺寸

返回向量容器可以容纳的最大元素数。


目前,我的函数基于数组的操作,矢量库不是基于模板类,矢量库使用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???!?!?!?!?
}

}

由于库/代码或系统中的限制,这与最大大小有关。对于非常做作的示例,假设您的实现使用了一个无符号短(2字节)数来存储向量中的记录数。然后,您的max_size函数将返回65536,因为您的库由于较差的实现而具有此限制。

作为另一个更现实的例子,如果您知道向量的最大大小(以字节为单位)限制为4G,并且容器中包含的大小为每个实例128个字节,那么max_size将返回33554431。(0xFFFFFFFF/128)

以下是在我的C++实现中如何做到这一点。本质上,找到size_type的最大值(无符号为-1),然后将其除以存储在向量中的对象的大小。(value_type)在32位硬件上,size_type(-1)将产生4294967295,如果您存储unsigned int,则值sizeof(value_type)将产生4个字节,从而使max_size()返回值为1073741823。

/**  Returns the size() of the largest possible %vector.  */
size_type max_size() const
{ 
    return size_type(-1) / sizeof(value_type); 
}

从您的链接中给出:

但是由于的系统或库实现限制,矢量可能达到的最大潜在大小

在您的情况下,max_size是系统上整数数组的最大大小。