是否可以在继续使用 c++ 之前将"for loop"嵌入"if statement"中以比较多个条件
Is it possible to embed "for loop" inside an "if statement" to compare multiple condition before continuing using c++
在这个程序中,用户必须输入一个3个字母的出发机场代码(userFlight),我会给他们可能的目的地。为了检查他们输入的是有效的机场代码之一(departureAirport),我想比较userFlight,并确保它是我存储在一个名为flights[]的向量中的可能的departureAirport之一。这段代码显然不起作用,但有类似的方法可以实现吗?
if
(for (j = 0, j < flights.size, j++)
{
(userFlight != flights[j].departAirport)
})
{return errorCode};
else
{//doSomething()};
如果它内部有一个operator<
,与您的情况相比确实很相似,如何
if(std::find(flights.begin(), flights.end(), userFlight) != flights.end())
{
/* found */
}
else
{
/* not found */
}
否则,如果你不喜欢,只需检查循环是否贯穿所有索引:
size_t i;
for (i = 0, i < flights.size, i++)
{
if(userFlight == flights[i].departAirport)
break;
}
if(i < flights.size)
{
/* found */
}
else
{
/* not found */
}
但不,你想要的语法并不存在。
您想要的代码结构是:
for (j = 0; j < flights.size(); j++)
if (userFlight == flights[j].departAirport)
break;
if ( j == flights.size() ) // we got to the end
return errorCode;
doSomething(j);
然而,这是一种类似C的代码样式。这并不是说有什么错,但C++允许算法更抽象地表达(因此更容易阅读和维护)。IMHO最好使用诸如CCD_ 2或CCD_。
听起来你实际上想要一个离港机场的std::set
。
std::set<std::string> departing_airports = {"DTW", "MKE", "MSP", };
assert(departing_airports.count("DTW") == 1);
还有一个选项是std::any_of
。假设flights
包含Flight
:类型的对象
if (std::any_of(std::begin(flights), std::end(flights),
[&](const Flight& f) { return userFlight == f.departAirport; }))
return errorCode;
doSomething();
相关文章:
- 嵌入方指针压缩已禁用
- 我的简单if-else语句是如何无法访问的代码
- 如何将enable-if与模板参数和参数包一起使用
- 无论条件是否为true,if总是在c++中执行
- Arduino:for/while/if在void setup()或void loop()之前?——错误:之前需要不合格
- 在静态库中嵌入类方法
- Insert函数不适用于2 if语句C++
- If语句未被求值C++
- 在没有Xcode的情况下在Mac捆绑包中嵌入框架
- C++嵌套if语句,基本货币交换
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 是否可以使用if constexpr删除控制流语句
- 要与"if constexpr"一起使用的编译时消息(在预处理器之后)
- 如何删除peer if else分支中的冗长句子
- 我似乎对if/else的基本语句有问题:/
- if数组上的随机数
- 嵌入在 #define 宏中的 if 语句
- 是否可以在继续使用 c++ 之前将"for loop"嵌入"if statement"中以比较多个条件
- 如何避免过多嵌入if-else
- 在 if. 中嵌入案例标签.否则声明