Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用模板类创建我自己的vector.size和vector.capacity函数?_C++_Function_Templates_Vector_Call - Fatal编程技术网

C++ 使用模板类创建我自己的vector.size和vector.capacity函数?

C++ 使用模板类创建我自己的vector.size和vector.capacity函数?,c++,function,templates,vector,call,C++,Function,Templates,Vector,Call,文件.h: 及 上面我的模板/呼叫有什么不正确之处^^^ 还有,找到容量的正确算法是什么 正如所建议的,未经编辑的错误: 跟踪大小和容量的常用方法是在类中包含成员变量 以这个简单的intvector类为例: findCapacity(vect) 无论何时向上述向量添加值,都会增加大小,并在删除项目时减小该值。在分配和重新分配数据时,容量也是如此 至于你的一些错误。当前的getSize函数应该返回大小(即您的计数器),而不是模板类型。考虑一下,如果在向量中存储结构,为什么在获取大小时要返回该结

文件.h:

上面我的模板/呼叫有什么不正确之处^^^

还有,找到容量的正确算法是什么

正如所建议的,未经编辑的错误:
跟踪大小和容量的常用方法是在类中包含成员变量

以这个简单的
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
};