(C++) 使用 OR 运算符将值与数组的每个元素进行比较的更简单方法?

0 c++ arrays sorting compare operators

我正在尝试使用类在 C++ 中构建一个计算器,但我遇到了这个问题。这是代码:(现在这不是真正的问题,但我可以看到它将来会成为一个问题)

char opcheck;
char opDisp[6] = { '+', '-', '*', '/', 'p', 'r' };

while (opcheck==opDisp[0] || opcheck==opDisp[1] || opcheck==opDisp[2] || opcheck==opDisp[2] || opcheck==opDisp[4] || opcheck==opDisp[5]);
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是那个 while 语句;如何在不为每个元素键入“opcheck==opDisp[n]”的情况下将变量 opcheck 与 opDisp 数组的每个元素进行比较?

C++ 甚至有任何内置的数组函数,比如“if(opcheck==opDisp[from 1 to 5 with the OR operator each time])”

mat*_*ort 5

您可以使用any_ofC++11 以后的标准算法:

if (std::any_of(std::cbegin(opDisp), std::cend(opDisp), [=](char x) { return x == opcheck; })) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

或者在 C++20 中使用std::ranges

if (std::ranges::any_of(opDisp, [=](auto x) { return x == opcheck; })) {
    ...
}
Run Code Online (Sandbox Code Playgroud)