这学期有一节 C++ 课。上学期我们正在学习 Python,现在我正在做一项作业,我需要制作一个 do-while 循环,当变量不等于数组中的多个数字之一时循环。 在 python 中,我会使用“not in”函数,例如:
if a not in (1,2,3,4):
或类似的东西。 我天真的尝试在 C++ 中做同样的事情是这样的:
do {...}while(userin != (1,2,3,4);
但显然它不起作用。
有人知道如何在 C++ 中执行此操作吗?
最佳答案
您可以使用algorithm header 中的标准库函数find。例如:
int user = // this comes from your code...;
std::vector<int> exclude{1,2,3,4};
do {...} while (std::find(exclude.begin(), exclude.end(), user) == exclude.end());
这将在用户不在排除数组中时循环。
但是您必须小心在循环中更改的内容和方式:用户和/或排除 -> 否则您很容易陷入无限循环。您必须确保终止条件,可能需要一些额外的计数器等。
您还可以创建自己的模板函数来在某个容器中搜索值,例如:
template<typename Container, typename T>
bool within(const Container& c, T value) {
return std::find(std::begin(c), std::end(c), value) != std::end(c);
}
然后你可以这样调用它:
do {...} while !within(exclude, user);
其他例子:
std::vector<int> v{1,2,3};
std::cout << boolalpha
<< within(v, 1) << std::endl
<< within(v, 5) << std::endl;
std::string s = "Hello world";
std::cout << within(s, 'o') << std::endl
<< within(s, 'x') << std::endl;
关于c++ - do-while循环多条件求值C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48252694/