C++如何编写一个函数来检查元素是否存在于动态分配的数组中



首先,这是一个赋值,只能使用动态分配的数组(不能使用向量或映射)。我收到的提示是创建另一个数组(我不确定是否分配了所有元素),并与原始数组进行比较。

因此,一个原始阵列被动态地分配了50的容量。我无法为myArray赋值或指定默认值。

int *myArray = new int[50];

并非所有元素都出现在每个索引中。myArray可能存在0、10或50个元素。我不知道元素有多少,也不知道在哪里。"不存在"的意思是指给定索引中的元素尚未初始化。

假设存在两个元素:

myArray [0] = 10;
myArray [1] = 20;

目标是编写一个具有3个要求的bool-isPresent(int index)函数:

如果索引太大(在这种情况下大于49),则返回false;

如果元素存在于isPresent(int index),则返回true;

如果给定索引处的元素不存在,则返回false。

bool isPresent(int 0){}//this should return true
bool isPresent(int 1){}//this should return true
bool isPresent(int 3){}//this should return false
bool isPresent(int 49){}//this should return false
bool isPresent(int 50){}//this should return false

请帮我完成bool isPresent()函数。对于我可以创建的第二个数组,也许可以帮助我,没有关于如何做的要求。我可以做以下事情,但我不确定这会有什么帮助:

int *myArray2 = new int[50];
for (int i = 0; i < 50; i++)
{
myArray2[i] = 100;//so I'm assigning 100 to every element for myArray2
//to compare?
}

bool isPresent()函数位于我需要编写的数组类下。给定的测试代码(我不能更改)是主要的。从main中,我的数组类的一个对象将被创建,并且不同的元素将从main中分配给isPresent()。

您有一个动态分配的整数数组

int* myArray = new int[size]; // where 'size' is the number of the elements in the array

函数isPresent()必须检查给定索引中是否存在值。

第一个简单的解决方案是默认初始化所有数组元素,如下所示:

int* myArray = new int[size]();

以便数组中的所有元素都具有默认值0。

然后isPresent()函数只需要检查数组中该特定索引处的元素是否为0

if(myArray[index]==0) 
return false;
return true;

此实现的问题是,我们将0视为标志而非值。如果用户只是想将0放在索引5处,该怎么办?那么我们的算法只会声明在索引5处没有元素,对吧?

另一个简单而天真的解决方案是选择另一个值而不是0(可能是-999)。。。但这显然是一个糟糕的解决方案,原因与我上面解释的相同,除非您的数组应该只包含正值!

如果使用structs不是问题,我建议你检查一下这个答案。

相关内容

最新更新