我正在开发一个需要在一定范围内迭代的程序。
我想知道是否可以像在基于范围的for循环中使用continue
一样。
工作:
std::optional<std::vector<std::string>> plc_list = db.get_plc_list();
for (auto i : *plc_list)
{
std::optional<std::vector<config_table_struct>> config_list = db.get_config(plc_ip);
if (not config_list.has_value()) {
//Display and Log Error Message 1
continue; //Skip current iteration
}
if (config_list->empty()) {
//Display and Log Error Message 2
//Do Some-Thing
continue; //Skip current iteration
}
}
不工作:
std::optional<std::vector<std::string>> plc_list = db.get_plc_list();
std::for_each(plc_list->begin(), plc_list->end(), [&db, &plc](const std::string& plc_ip) {
db.create_table(plc_ip);
std::optional<std::vector<config_table_struct>> config_list = db.get_config(plc_ip);
if (not config_list.has_value()) {
//Display and Log Error Message 1
//continue; //Skip current iteration
}
if (config_list->empty()) {
//Display and Log Error Message 2
//Do Some-Thing
//continue; //Skip current iteration
}
//Perform Normal Operations
}
答案 0 :(得分:12)
将continue
替换为return
。