C++ 使用模板类创建我自己的vector.size和vector.capacity函数?
文件.h: 及 上面我的模板/呼叫有什么不正确之处^^^ 还有,找到容量的正确算法是什么 正如所建议的,未经编辑的错误:C++ 使用模板类创建我自己的vector.size和vector.capacity函数?,c++,function,templates,vector,call,C++,Function,Templates,Vector,Call,文件.h: 及 上面我的模板/呼叫有什么不正确之处^^^ 还有,找到容量的正确算法是什么 正如所建议的,未经编辑的错误: 跟踪大小和容量的常用方法是在类中包含成员变量 以这个简单的intvector类为例: findCapacity(vect) 无论何时向上述向量添加值,都会增加大小,并在删除项目时减小该值。在分配和重新分配数据时,容量也是如此 至于你的一些错误。当前的getSize函数应该返回大小(即您的计数器),而不是模板类型。考虑一下,如果在向量中存储结构,为什么在获取大小时要返回该结
跟踪大小和容量的常用方法是在类中包含成员变量 以这个简单的
int
vector类为例:
findCapacity(vect)
无论何时向上述向量添加值,都会增加大小
,并在删除项目时减小该值。在分配和重新分配数据时,容量也是如此
至于你的一些错误。当前的
getSize
函数应该返回大小(即您的计数器),而不是模板类型。考虑一下,如果在向量中存储结构,为什么在获取大小时要返回该结构类型?因此,将其更改为例如int
是一个良好的开端。另一个好处是不要将指针用于计数器,应该使用普通的int
(特别是因为增加指针将使其增加基础类型的大小,因此对于int
指针,它将增加4(int
是32位,4字节)。您没有使用“Hm”指定类型,你清空一个容器以便你能找到它的大小?oO和“int*i=0;//指针,以便它在循环完成后保留其值。”不,不,不。我不确定您试图用它实现什么,但这不会起作用。如果您询问编译错误,请始终在问题中包括所有未经编辑的错误。我猜这可能与将int
指针返回为T
有关。您编写了findSize
来获取参数。但是你没有通过任何测试。@KresimirBukovac添加类似于size\t mysize
到您的var
键入并将计数保持为类不变量?这是显而易见的方法。当然,谢谢。如果在所有元素已经存储在向量中的情况下无法获得大小,那么这就是我计划要做的。我已经更改了该函数。它现在有大小;在while循环中,我使size=I;因此,大小正在返回。
int temp;
for(int i = 0; i < 50; i++){
cin >> temp; //accepts number inputs from user (50 of them)
vect.push_back(temp);
cout << "Size: " << findSize(vect) << " Capacity: " << findCapacity(vect) << endl;
}
findSize(vect)
findCapacity(vect)
class int_vector
{
public:
// Some public functions
private:
size_t size; // The current size
size_t capacity; // The current capacity
int* data; // The actual "vector" data
};