在数组中查找元素,然后使用指针进行交换

finding element in array then swapping using pointers

本文关键字:指针 交换 然后 数组 查找 元素      更新时间:2023-10-16

尝试编写一个名为bool findElement(int elt)的方法

首先遍历元素数据以查找元素 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;
    }   
}

错误:大小未定义元素数据未定义

这就是输出应该的样子

findElement(4) => true[4, 2, 6, 7, 3] -- 大小=5, 容量=8

findElement(1) => false[3, 2, 6, 7, 4] -- 大小=5,容量=8

如果不了解元素是如何存储的,就很难帮助您。它们在一个简单的(类似 c 的)数组中吗?它们是否在像 std::vector 这样的C++ stl 包含器中?

如果它们在一个简单的类似 c 的数组中,你可以这样做

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;
}

在函数定义之前,您必须定义 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;