尝试编写一个名为bool findElement(int elt)
的方法首先遍历elementData以找到元素elt。如果找到,则该方法返回true,但是找到的元素(当存在重复元素时最左边的元素)被移动到数组的前面并与第0个元素交换。
例如,如果调用的数组(由elementData指向)包含[6,2,4,7,3]和findElement(7),则该函数将数组更改为[7,2,4,6,3 ]并返回true。如果在数组中找不到该元素,则该函数返回false。
这是我到目前为止所拥有的
bool findElement(int elt)
{
double temp2 = elementData[i];
elementData[i] = elementData[0];
for (int i = 0; i < size; i++)
{
if (elementData[i] == elt)
return true && elementData[0] = temp2;
else
false;
}
}
错误: 大小未定义 elementData未定义
这就是输出应该是什么样子
findElement(4)=&gt;真正 [4,2,6,7,3] - 大小= 5,容量= 8
findElement(1)=&gt;假 [3,2,6,7,4] - 大小= 5,容量= 8
答案 0 :(得分:0)
如果不了解元素的存储方式,很难帮助您。它们是一个简单的(类似的)数组吗?它们是否在像std :: vector?
这样的C ++ stl包含器中如果他们在一个简单的类似数组中你可以做
template <typename T>
bool findElement(T element, T* array, size_t size)
{
T* ptr = std::find(array, array+size, element);
if (ptr == array+size) return false;
std::swap(*array, *ptr);
return true;
}
答案 1 :(得分:0)
您必须在函数定义之前定义elementData和size。简单地说:
double elementData[] = {6, 2, 4, 7, 3};
int size = 5;
我认为由于短路评估,return true && elementData[0] = temp2;
不是你想要的。你应该这样写:
if (elementData[i] == elt){
elementData[0] = temp2;
return true;
}
else return false;