diff --git a/MaterialLib/MPL/CreateComponent.cpp b/MaterialLib/MPL/CreateComponent.cpp index c042afe9501e1cfb84e99cd2f939c508bcbe4f6d..d5d3026f2469f51f61b0137a4c01516ac69a444c 100644 --- a/MaterialLib/MPL/CreateComponent.cpp +++ b/MaterialLib/MPL/CreateComponent.cpp @@ -72,10 +72,6 @@ std::vector<std::unique_ptr<Component>> createComponents( } std::vector<std::unique_ptr<Component>> components; - - // Collect component's names to avoid duplicate components. - std::set<std::string> component_names; - for ( auto const& component_config : //! \ogs_file_param{prj__media__medium__phases__phase__components__component} @@ -83,10 +79,11 @@ std::vector<std::unique_ptr<Component>> createComponents( { auto component = createComponent(component_config); - bool new_insertion = false; - std::tie(std::ignore, new_insertion) = - component_names.insert(component->name()); - if (!new_insertion) + if (std::find_if(components.begin(), + components.end(), + [component_name = component->name()](auto const& c) { + return c->name() == component_name; + }) != components.end()) { OGS_FATAL("Found duplicates with the same component name tag '%s'.", component->name().c_str()); @@ -94,6 +91,7 @@ std::vector<std::unique_ptr<Component>> createComponents( components.push_back(std::move(component)); } + return components; } } // namespace MaterialPropertyLib diff --git a/MaterialLib/MPL/CreatePhase.cpp b/MaterialLib/MPL/CreatePhase.cpp index 800de257b90905abf3542d6c72b60d4954a3b555..f1c9757de0f622b3e3e59077bf8e633824c87656 100644 --- a/MaterialLib/MPL/CreatePhase.cpp +++ b/MaterialLib/MPL/CreatePhase.cpp @@ -89,17 +89,17 @@ std::vector<std::unique_ptr<Phase>> createPhases( std::vector<std::unique_ptr<Phase>> phases; - std::set<std::string> phase_names; - - //! \ogs_file_param{prj__media__medium__phases__phase} - for (auto phase_config : config->getConfigSubtreeList("phase")) + for (auto phase_config : + //! \ogs_file_param{prj__media__medium__phases__phase} + config->getConfigSubtreeList("phase")) { auto phase = createPhase(phase_config); - bool new_insertion = false; - std::tie(std::ignore, new_insertion) = - phase_names.insert(phase->name()); - if (!new_insertion) + if (std::find_if(phases.begin(), + phases.end(), + [phase_name = phase->name()](auto const& p) { + return p->name() == phase_name; + }) != phases.end()) { OGS_FATAL("Found duplicates with the same phase name tag '%s'.", phase->name().c_str()); @@ -107,6 +107,7 @@ std::vector<std::unique_ptr<Phase>> createPhases( phases.push_back(std::move(phase)); } + return phases; } } // namespace MaterialPropertyLib