【发布时间】:2012-03-17 13:06:10
【问题描述】:
对于一个作业,我应该重新创建 C++ Vector 库,但我目前被困在如何返回最大尺寸上。
根据本网站: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???!?!?!?!?
}
}
【问题讨论】:
-
你有什么问题?您必须跟踪数组中的元素数量。我假设是
length。 -
不,根据 c++ 参考网站它指出:这不是当前分配给向量的存储空间量(这可以通过成员 vector::capacity 获得),而是最大潜在大小由于系统或库实现限制,向量可能会到达。
-
@ScottCurtis 哎呀误读了它是哪个函数 - 是的
max_size()往往是本机 int 的最大值,但没有标准大小。 -
我可能在吹毛求疵,但您可以选择在声明 STL 向量时使用的分配器,而 max_size() 似乎由分配器定义。所以从技术上讲,你可以拥有一个 STL 向量,它具有你想要的任何 max_size 值,只需要提供你的自定义分配器。无论如何,新学生可以放心地忽略这一点。
标签: c++ arrays vector size max