给定这样一个结构,我该如何创建一个可扩展(向量)数组?C++用指针创建一个可扩展的数组
struct IntArray {
int size;
int capacity;
int *contents;
};
我想用INT *内容指向整数数组,只是改变指针作为IntArray扩大了,但我怎么知道是什么尺寸,使我的整数的初始阵列?
给定这样一个结构,我该如何创建一个可扩展(向量)数组?C++用指针创建一个可扩展的数组
struct IntArray {
int size;
int capacity;
int *contents;
};
我想用INT *内容指向整数数组,只是改变指针作为IntArray扩大了,但我怎么知道是什么尺寸,使我的整数的初始阵列?
作为@aaronman说,这将是不适合你,如果我们只是给你的最终解决方案:如果你想学习的东西,你最好试试这个你自己从头开始(否则只使用现有的std::vector
或QVector
或任何向量)。
所以相反,我建议你看一些教程或灵感的一些exapmles,然后从头开始。即使简单谷歌搜索c++ tutorial implementing dynamic array将提供一些可容忍的视频like this以及一些文字链接。
后,您与实施细则明确,你可能会想设计自己的阵列的接口,并考虑点可以如下:
struct
这个class
,而不是使字段默认为私有(encapsulation)push_back
可能会增加结束。您会看到添加元素可能导致重新分配,因此将重新分配过程提取到另一个(可能是私有的)方法(使其可重用)并使用该视频中的想法实施它,然后将其从push_back
中调用,如果size == capacity
。最后,您可以将您的实施与std::vector
或其他现有的动态数组进行比较,以查看您是否缺少某些东西。大约三年前,我不得不自己执行我的文凭工作中的矢量(为了细致地控制其修改和重新分配的性能原因),您可能还会检查it,但是(免责声明!)您可能会发现它有点复杂和杂乱后,我所有的优化:)
继续!希望这有助于(并激励你一点)。
“可扩展阵列”你的意思是'的std :: VECTOR' – aaronman
是像一个矢量 – user1985251
你为什么不只是使用矢量 – aaronman