C++ C++;-在循环参数内处理列表的更有效方法
正如标题所说。例如,您有一个值列表char values[11],并且希望在循环参数中循环该列表:C++ C++;-在循环参数内处理列表的更有效方法,c++,list,while-loop,arguments,C++,List,While Loop,Arguments,正如标题所说。例如,您有一个值列表char values[11],并且希望在循环参数中循环该列表: while(something not in values[]) { doSomething(omgwtfbbq) } 当然,它在C++中是不起作用的…我想大概是这样。至少“not”关键字不存在 有人能建议是否有解决方案吗?您可以使用@Deepu建议的方法,但更干净、更可靠的解决方案是使用系统中存在的事件机制。在一个线程上,您将等待所需的按键事件,在另一个线程上,您将截获按键中断并分析数
while(something not in values[])
{
doSomething(omgwtfbbq)
}
当然,它在C++中是不起作用的…我想大概是这样。至少“not”关键字不存在
有人能建议是否有解决方案吗?您可以使用@Deepu建议的方法,但更干净、更可靠的解决方案是使用系统中存在的事件机制。在一个线程上,您将等待所需的按键事件,在另一个线程上,您将截获按键中断并分析数据。如果它包含所需的值,请指出所需的按键事件。好,因此问题已解决,但在评论中回答我的人没有发布完整的回复,因此我将在此处发布答案 将列表更改为向量
向量值[4]
。然后使用Raymond Chen建议的查找函数:
while(find(values.begin(),values.end(),something)==values.end())
{
doSomething(eatBananas)
}
如果Raymond Chen给出了明确的答案,我将在技术上标记他的.代码> > <代码>不是关键字,而是C++中的一个重新定义的标识符。然而,这种区别是非常微妙的。对于不允许你直接使用<代码> > <代码>的编译器,尝试包括
while(std::find(&values[0],&values[11],something)=values[11]){…}
。如果说int*first=&values[0],可读性更高;int*last=&values[11]
首先,然后可以说while(std::find(first,last,something)==last)
。[我花了一段时间才弄明白你想做什么。起初,我以为你想要什么来枚举值中不包含的所有整数,
…]em。。。好啊我不完全明白你在说什么。这听起来像GUI程序会使用的东西,是事件驱动的。但是控制台应用程序呢?根据具体情况,向用户提供不同数量的可能“正确”答案。我的理解正确吗?没有任何东西会限制GUI应用程序,这是一种通用方法。那么,我怀疑我是否能够在当前状态下实现这一点。我不知道控制台应用程序中的线程和事件。