C++矢量库,为赋值重新创建,最大大小函数
C++ Vector library, Recreating for Assignment, max size function
对于一个赋值,我应该重新创建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是系统上整数数组的最大大小。
相关文章:
- 如何创建函数管道,以便函数一个接一个地运行?
- 如何创建一个对象创建函数,该函数将由与其关联的名称调用?
- 创建函数变体向量时"No matching function for call"错误
- C++ 在映射中创建函数指针向量
- 以编程方式在 C++ 中创建函数
- 如何创建函数可能使用自定义可比C++?
- 编译错误,未创建函数/方法! 对于 brms 模型
- Cython 创建 C 函数别名
- 创建函数指针数组
- 动态创建函数并获取指针
- 混合模板类型的模板参数包(std::使用可选参数重新创建函数)
- 如何创建函数原型命名空间
- 无法创建函数数组
- 在为STD模板函数创建函数对象时,还要还原样板
- 是否可以在C++中声明基类,以便只能通过创建函数创建从它派生的类
- 将原始指针移动到已创建函数中的下一个字符
- qjsonObject如何创建函数
- 尝试在别人的代码中C++创建函数(A* 搜索)
- 在C++中通过模板包重新创建函数签名和调用
- 创建函数时接收"expected unqualified-id"