From 010b16510f8c00b714d62566505dd2a855b5e344 Mon Sep 17 00:00:00 2001 From: Ivo Ihlemann <38039109+ivoihlemann@users.noreply.github.com> Date: Thu, 29 Oct 2020 10:02:44 +0100 Subject: [PATCH] add overload for etl::equal that compares lengths (#294) * add overload for etl::equal that compares lengths accoring to std::equal (https://en.cppreference.com/w/cpp/algorithm/equal) * add test for equal overload that compares lengths --- include/etl/algorithm.h | 13 +++++++++++++ test/test_algorithm.cpp | 4 ++++ 2 files changed, 17 insertions(+) diff --git a/include/etl/algorithm.h b/include/etl/algorithm.h index d0d8eaba..b65e9ebb 100644 --- a/include/etl/algorithm.h +++ b/include/etl/algorithm.h @@ -800,6 +800,19 @@ namespace etl } #endif +template +ETL_NODISCARD +bool equal(TIterator1 first1, TIterator1 last1, TIterator2 first2, TIterator2 last2) +{ + if (etl::distance(first1, last1) != + etl::distance(first2, last2)) + { + return false; + } + return etl::equal(first1, last1, first2); +} + + #if ETL_NOT_USING_STL //*************************************************************************** // lexicographical_compare diff --git a/test/test_algorithm.cpp b/test/test_algorithm.cpp index aefc9c50..1db1efef 100644 --- a/test/test_algorithm.cpp +++ b/test/test_algorithm.cpp @@ -703,6 +703,10 @@ namespace { CHECK(etl::equal(std::begin(dataV), std::end(dataV), std::begin(dataL))); CHECK(!etl::equal(std::begin(dataSL), std::end(dataSL), std::begin(dataL))); + + int small[] = { dataS[0] }; + CHECK(etl::equal(std::begin(dataV), std::end(dataV), std::begin(dataL), std::end(dataL))); + CHECK(!etl::equal(std::begin(dataS), std::end(dataS), std::begin(small), std::end(small))); } //*************************************************************************