vector_dinamic *creeaza_vector()
{
vector_dinamic *v=malloc(sizeof(vector_dinamic)*capacitate_initiala);
v->Element=malloc(sizeof(Elements)*capacitate_initiala);
v->lungimea=0;
v->capacitatea=capacitate_initiala;
return v;
}
这是一个动态 vector ,其中 lungimea 是长度,capacitatea 是容量。 capcacitatea_initiala 为 100,这意味着我可以存储 100 个元素。
typedef void* Elements;
typedef struct{
Elements * Element;
int lungimea;
int capacitatea;
} vector_dinamic;
我也有这种没有元素的类型,为了能够在我的 vector 中存储不同类型的元素,我已经设法添加了,但我的问题是如何比较两个相同类型的元素,我想实现删除功能,但我正在努力比较两个元素
typedef struct{
int numar_apartament;
int suma;
char * tipul;
} Cheltuieli;
我有这个元素类型,现在有人可以告诉我如何通过“numar_apartament”比较我的通用 vector 中的元素吗?
void modifica(vector_dinamic * vector, int numar_apartament)
{
int i,a=0;
for (i=0;i<vector->lungimea;i++)
{
if (vector->Element[i]->numar_apartament)==element->numar_apartament)
a=1;
}
return a;
}
这是我尝试过的方法,但我遇到了很多错误并且它不起作用......
谢谢!
最佳答案
void
指针没有任何特定类型,这就是它们可以指向任何东西的原因。您必须将 void
指针转换为它们指向的实际类型,才能取消引用它们:
((Cheltuieli *) vector->Element[i])->numar_apartament
括号也有问题,缺少左括号。
关于C如何比较未知类型的2个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15473684/