在数组中查找元素,然后使用指针进行交换
finding element in array then swapping using pointers
尝试编写一个名为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;
相关文章:
- 共享指针的复制和交换效率
- 如何在单个链表中交换两个节点的位置,只修改指针
- 以原子方式交换指针与 nullptr
- 使用指针交换整数
- 使用指针 c++ 交换结构数组中的元素
- 使用指针交换数组的内容
- 无法使用指针写入交换
- 使用指针交换而不引用数组C++
- 共享指针交换方法标识更改
- 为什么基于指针交换两个值在函数范围之外不起作用?
- 将指针交换为指针
- 使用双向链表中的指针交换节点
- 使用指针交换字符变量
- 通过 xor 运算符使用引用或指针交换两个变量的值
- 指针交换怪异
- 当数组是类的数据成员时,如何使用指针交换数组
- 使用公用指针交换指向已分配内存的指针
- 使用指针交换两个字符串会输出奇怪的输出
- 仅通过操作指针交换链表中的相邻节点
- 使用指针交换两个变量