gpt4 book ai didi

C++ vector 库,为赋值重新创建,最大尺寸函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:26:11 24 4
gpt4 key购买 nike

对于一项任务,我应该重新创建 C++ Vector 库,而我目前被困在如何返回最大大小上。

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

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


目前我的函数是基于数组的操作, vector 库不是基于模板类, vector 库使用 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 字节)数字来存储 vector 中的记录数。然后您的 max_size 函数将返回 65,536,因为您的库会由于实现而受到此限制。

作为另一个更实际的例子,如果您知道 vector 的最大大小(以字节为单位)限制为 4G,并且包含在容器中的大小是每个实例 128 字节,那么 max_size 将返回类似于33,554,431。 (0xFFFFFFFF/128)

下面是我在 C++ 实现中的实现方式。本质上,找到 size_type 的最大值(无符号为 -1),然后将其除以存储在 vector 中的对象的大小。 (值类型)在 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);
}

关于C++ vector 库,为赋值重新创建,最大尺寸函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9475522/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com