在特定条件下跳过std :: for_each中的迭代

时间:2019-05-21 06:10:13

标签: c++ c++11 c++17

我正在开发一个需要在一定范围内迭代的程序。 我想知道是否可以像在基于范围的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
}

1 个答案:

答案 0 :(得分:12)

continue替换为return