From 7e1b7c81f0848103a089d5d3bc10ea70b0098cd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org> Date: Wed, 17 Jul 2024 15:25:50 +0200 Subject: [PATCH] C++20 modernization: use std::ranges::set_intersection --- src/ComputingTasks.cc | 11 ++++------- src/DynamicModel.cc | 3 +-- src/ModFile.cc | 8 +++----- 3 files changed, 8 insertions(+), 14 deletions(-) diff --git a/src/ComputingTasks.cc b/src/ComputingTasks.cc index ec26f9b7..e05e9fa2 100644 --- a/src/ComputingTasks.cc +++ b/src/ComputingTasks.cc @@ -920,11 +920,9 @@ EstimationStatement::checkPass(ModFileStructure& mod_file_struct, WarningConsoli /* Check that we are not trying to estimate a parameter appearing in the planner discount factor (see dynare#1173) */ vector<int> estimated_params_in_planner_discount; - set_intersection(mod_file_struct.estimated_parameters.begin(), - mod_file_struct.estimated_parameters.end(), - mod_file_struct.parameters_in_planner_discount.begin(), - mod_file_struct.parameters_in_planner_discount.end(), - back_inserter(estimated_params_in_planner_discount)); + ranges::set_intersection(mod_file_struct.estimated_parameters, + mod_file_struct.parameters_in_planner_discount, + back_inserter(estimated_params_in_planner_discount)); if (!estimated_params_in_planner_discount.empty()) { cerr << "ERROR: It is not possible to estimate a parameter (" @@ -1183,8 +1181,7 @@ AbstractEstimatedParamsStatement::commonCheckPass() const it.p4->collectVariables(SymbolType::parameter, used_params); it.jscale->collectVariables(SymbolType::parameter, used_params); vector<int> intersect; - set_intersection(declared_params.begin(), declared_params.end(), used_params.begin(), - used_params.end(), back_inserter(intersect)); + ranges::set_intersection(declared_params, used_params, back_inserter(intersect)); if (!intersect.empty()) { cerr << "ERROR: in `" << blockName() << "' block, the value of estimated parameter " diff --git a/src/DynamicModel.cc b/src/DynamicModel.cc index 1fd6d5f1..3cd9a0e3 100644 --- a/src/DynamicModel.cc +++ b/src/DynamicModel.cc @@ -3715,8 +3715,7 @@ DynamicModel::checkNoWithLogTransform(const set<int>& eqnumbers) const set<int>& with_log_transform = symbol_table.getVariablesWithLogTransform(); vector<int> intersect; - set_intersection(endos.begin(), endos.end(), with_log_transform.begin(), with_log_transform.end(), - back_inserter(intersect)); + ranges::set_intersection(endos, with_log_transform, back_inserter(intersect)); if (!intersect.empty()) { cerr << "ERROR: the following variables are declared with var(log) and therefore cannot " diff --git a/src/ModFile.cc b/src/ModFile.cc index 3c01dbd1..fcc654cb 100644 --- a/src/ModFile.cc +++ b/src/ModFile.cc @@ -355,11 +355,9 @@ ModFile::checkPass(bool nostrict, bool stochastic) // Test if some estimated parameters are used within the values of shocks // statements (see issue #469) set<int> parameters_intersect; - set_intersection(mod_file_struct.parameters_within_shocks_values.begin(), - mod_file_struct.parameters_within_shocks_values.end(), - mod_file_struct.estimated_parameters.begin(), - mod_file_struct.estimated_parameters.end(), - inserter(parameters_intersect, parameters_intersect.begin())); + ranges::set_intersection(mod_file_struct.parameters_within_shocks_values, + mod_file_struct.estimated_parameters, + inserter(parameters_intersect, parameters_intersect.begin())); if (parameters_intersect.size() > 0) { cerr << "ERROR: some estimated parameters ("; -- GitLab