c++ - do-while循环多条件求值C++

标签 c++ loops conditional-statements do-while

这学期有一节 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;

这里是活生生的例子:https://wandbox.org/permlink/qEzDZ93HvCaU0bJb

关于c++ - do-while循环多条件求值C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48252694/

相关文章:

c++ - 如何正确从 vector 返回 unique_ptr?

c++ - 在程序中获取调试断言错误

c++ - 通过填充一个元素构造 std::array

java - 在Java中,当捕获异常时,返回到for循环

java - 移动背景 Android

regex - 如果不等于 2 个值中的任何一个,则 awk 替换列值

c++ - move 构造函数如何工作?

c - 当用户插入文本时,如何循环选项变量为int的菜单?

xml - 计算具有多个条件的 xml 元素

ruby-on-rails - 如何使用 3 个或语句编写 Pundit 策略?