我创建了一个指向动态向量指针的指针,名为" list"。
listaFiguras::listaFiguras(){
numElements = 0;
list = new figuraGeom* [numElements];
}
这也是我的课程:
class listaFiguras {
//Atributos
int numElements;
figuraGeom **list;
public :
//Constructor sin parametros
listaFiguras();
//Destructor
~listaFiguras();
//Sets y Gets
void setnumElementos(int);
virtual void setLista(figuraGeom**);
int getnumElementos();
virtual figuraGeom* getLista();
//Vaciar lista
void vaciarLista();
//Añadir elemento
void anyadirElemento(figuraGeom *);
};
现在我必须创建一个名为anyadirElemento的方法,但不明白我该怎么做:
将一个指向figuraGeom的指针作为参数,并添加到list指向的动态数组的末尾。
我明白了:
void listaFiguras :: anyadirElemento (figuraGeom * parameter) {
}
任何帮助将不胜感激,谢谢!
答案 0 :(得分:2)
一个非常简单的动态数组定义如下:
您需要知道阵列中当前有多少元素才能使用它们;在添加/删除元素时,您只需创建另一个包含一个或多个元素的数组(这涉及将旧数组复制到新数组中)。
注意:这是非常低效的添加元素是O(N),其中N是数组中已有的元素数,但它也非常简单,在实际代码中使用std::vector<T>
执行添加以摊销的O(1)结束。
答案 1 :(得分:2)
如果使用std::vector<figuraGeom *>
您必须保持数组中的当前位置以了解添加新值的位置。例如,假设您定义了类
的此类数据成员int position;
并以某种方式将其初始化为零(例如在类的构造函数中)
然后,如果不能重新分配数组,该函数可以采用以下方式
void listaFiguras :: anyadirElemento (figuraGeom * parameter)
{
if ( position < numElements ) list[position++] = parameter;
}
所以我将该类的数据成员定义为
class listaFiguras {
//Atributos
int numElements;
int position;
figuraGeom **list;
//...
如果允许放大最初分配的数组,那么每次当position等于numElements时,函数应该重新分配它,其中numElements也将被更改,或者你应该保留另一个存储数组当前大小的变量。 / p>