gpt4 book ai didi

c++ - 查找 C++ 容器中唯一的一个元素

转载 作者:行者123 更新时间:2023-12-01 14:39:50 25 4
gpt4 key购买 nike

我想编写一个函数来查找数组中唯一的偶数。
如果这个数组中偶数不等于1,我的函数应该返回0;

#include <array>
#include <algorithm>

using namespace std;

int test(const array<int, 8> &arr) {
auto isEven = [](int i){return i % 2 == 0;};
if (count_if(arr.begin(), arr.end(), isEven) != 1)
return 0;
auto it = find_if(arr.begin(), arr.end(), isEven);
return *it;
}

我用 count_ifend_if完成程序。
但它是低效的。程序遍历数组两次,以防找到唯一的偶数。
是否存在适当的 STL 来解决这个问题?

最佳答案

您可以调用find_if两次,如果找到,则在第二次从第一次找到的迭代器中调用它。

int test(const array<int, 8> &arr) {
auto isEven = [](int i){return i % 2 == 0;};
auto it = find_if(arr.begin(), arr.end(), isEven);
if (it == arr.end()) return 0; // not found, the number of even in the array is 0
auto it2 = find_if(it + 1, arr.end(), isEven);
if (it2 != arr.end()) return 0; // found, the number of even in the array is more than 1
return *it;
}

关于c++ - 查找 C++ 容器中唯一的一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60482221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com