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])”?
您可以使用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)