【发布时间】:2022-01-20 17:12:22
【问题描述】:
我需要检查列表中的每个元素是否不能被我的输入中的任何一个整除,如果条件为真,则将该数字设置为 -1。 问题显然出在功能的某个地方。 功能测试我的一个输入,当条件为真时,它切换到另一个条件,但我需要用一个输入检查整个列表,然后用另一个输入检查整个列表
#include <vector>
#include <list>
#include <functional>
#include <iostream>
using namespace std;
void find_any_default(list < int > & lista, const vector < function < bool(int) >> & funkcije, int def = -1)
{
auto beginl = lista.begin(), endli = lista.end();
int brojac = 0;
auto beginv = funkcije.begin(), endv = funkcije.end();
while (beginl != endli)
{
while (beginv != endv)
{
auto g = * beginv;
if ((g( * beginl)))
{
* beginl = -1;
}
break;
++beginv;
}
++beginl;
}
}
int main()
{
vector < function < bool(int) >> funkcije;
list < int > lista { 3, 4, 8, 10, 7 };
int input;
while (cin >> input)
{
auto l = [input](int a)
{
if ((a % input) == 0)
{
return false;
}
else
{
return true;
}
};
funkcije.push_back(l);
}
find_any_default(lista, funkcije);
for (auto i: lista)
{
std::cout << i << std::endl;
}
return 0;
}
【问题讨论】:
-
一个问题是您的
break语句放错了位置。 -
当您使用调试器运行此代码时,您看到了什么?这就是调试器的用途,如果您不知道如何使用它,这是一个学习在调试器中一次运行程序、监控所有变量及其值变化并分析您的程序的好机会程序的逻辑和执行。您应该可以使用您的调试器在这个和您编写的所有未来程序中发现所有简单的问题,全部由您自己完成。