]> git.tdb.fi Git - libs/core.git/commitdiff
Add a shortcut for transforming a container in-place
authorMikko Rasa <tdb@tdb.fi>
Sun, 29 Aug 2021 14:16:04 +0000 (17:16 +0300)
committerMikko Rasa <tdb@tdb.fi>
Sun, 29 Aug 2021 22:42:04 +0000 (01:42 +0300)
source/core/algorithm.h
source/strings/utils.cpp

index b79114e9d7a8de906b7be40e4c684e1a9758280a..268bf7b89f9ca54ac56ae6ff7d51e4f2fbfb64cc 100644 (file)
@@ -171,6 +171,12 @@ inline void stable_sort_member(Container &cont, T Container::value_type::*mp)
        stable_sort(cont, MemberCompare<typename Container::value_type, T>(mp));
 }
 
+template<typename Container, typename Predicate>
+inline void transform(Container &cont, Predicate pred)
+{
+       transform(cont.begin(), cont.end(), cont.begin(), pred);
+}
+
 } // namespace Msp
 
 #endif
index 6b659d0bd46a30a23f1a719dad1e79aa940a2678..eb2142d5be153b68c405a26a96dba0856f3e4091 100644 (file)
@@ -1,7 +1,7 @@
-#include <algorithm>
 #include <list>
 #include <stdexcept>
 #include <cctype>
+#include <msp/core/algorithm.h>
 #include "utils.h"
 
 using namespace std;
@@ -63,14 +63,14 @@ int strcasecmp(const string &s1, const string &s2)
 string tolower(const string &str)
 {
        string result(str);
-       transform(result.begin(), result.end(), result.begin(), [](char c){ return std::tolower(c); });
+       transform(result, [](char c){ return std::tolower(c); });
        return result;
 }
 
 string toupper(const string &str)
 {
        string result(str);
-       transform(result.begin(), result.end(), result.begin(), [](char c){ return std::toupper(c); });
+       transform(result, [](char c){ return std::toupper(c); });
        return result;
 }