From 063d708c3e9826a9ad9dfe0429b0960815ca3cb9 Mon Sep 17 00:00:00 2001 From: Sean Robinson Date: Mon, 28 Feb 2022 13:20:08 -0700 Subject: [PATCH] Modify ArgumentParser::get_length_of_longest_argument method run in O(1) space Closes #124 Reported-by: Aayush Anand Signed-off-by: Sean Robinson --- include/argparse/argparse.hpp | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/include/argparse/argparse.hpp b/include/argparse/argparse.hpp index 6c8daf2..8395675 100644 --- a/include/argparse/argparse.hpp +++ b/include/argparse/argparse.hpp @@ -1149,14 +1149,11 @@ private: if (m_argument_map.empty()) { return 0; } - std::vector argument_lengths(m_argument_map.size()); - std::transform(std::begin(m_argument_map), std::end(m_argument_map), - std::begin(argument_lengths), [](const auto &pair) { - const auto &argument = pair.second; - return argument->get_arguments_length(); - }); - return *std::max_element(std::begin(argument_lengths), - std::end(argument_lengths)); + std::size_t max_size = 0; + for (const auto& [unused, argument] : m_argument_map) { + max_size = std::max(max_size, argument->get_arguments_length()); + } + return max_size; } using list_iterator = std::list::iterator;